Linux

Linux) Shell script

하이오야이 2024. 4. 22. 16:53

Shell script

터미널에서 실행될 수 있는 명령어를 하나의 파일로 묶은 것

모든 Shell script는 반드시 Shebang으로 시작 해야합니다.

위에 보이는

#!/bin/sh

코드가 Shebang입니다. 문자열 "#!" 이후에 사용할 shell의 경로를 알려주는 과정입니다.

 

Shebang 이후에 사용할 명령어들을 나열하면 됩니다.

다음은 직접 shell script를 작성한 코드입니다. 먼저 Shebang을 작성하고 echo 뒤에 문자열을 출력을 한 뒤에 

현재 경로의 상위 폴더로 이동후에 hello 문자열을 입력한 wow파일을 생성해주는 shell script입니다.

shell script: 반복문

"list"라는 이름을 가진 리스트를 생성해줍니다. 요소들은 띄어쓰기로 요소들이 구분이 됩니다. 

그렇게 된다면 list 변수에 1부터 5까지의 수가 저장되게 됩니다.

 

그리고 변수를 참조할때는 변수 앞에 "$"문자를 붙여 해당 문자가 변수임을 명시해줍니다.

 

c언어 같은 경우, 반복문의 조건을 만족할 시 동작하는 코드들을 { }(중괄호)로 묶어 나타내지만

 

shell script 같은 경우는 코드의 시작은 "do" 코드의 끝 done으로 나타냅니다.

 

 

여기서!! 주의할 점이 있습니다.

이때 변수명과 "= (equal)"과 "= (equal)"과 숫자들 간에 공백이 존재하게 된다면 해당 구문을 인식하지 못하게 됩니다.

그러므로 공백을 문자들간 공백이 없게 해야합니다.(변수로 인식하지 못해 "list"변수의 폰트의 색상이 흰색으로 보임)

 

명령어 실행 후 반환 받은 값으로 반복

명령어를 실행 후 반환 받은 값들을 요소로 반복문을 돌 수 있습니다.

 

예를 들어 파일의 리스트를 출력해주는 명령어 "ls"를 실행 후에 파일명들을 가지고 반복을 돌려줍니다.

 

이때 명령어를 묶어주는 기호는 '(작은 따옴표)가 아닌 `(억음 부호)로 명령어를 묶어주어야 합니다.

 

실행하면 이런 출력을 볼 수 있습니다.

 

Shell script: 조건문

Shell script에서도 조건문을 사용할 수 있습니다. 하지만 대부분의 언어에서는 기호로 대소관계를 비교하지만 Shell script 같은 경우에는 알파벳으로 대소 관계를 비교합니다.

이항조건

">" = -gt

">=" = -ge

"<" = -lt

"<=" = -le

"==" = -eq

"!=" = -ne

단항조건

-e = 파일이 존재하면 참

-d = 디렉토리가 존재하면 참