블로그 이미지
progh2
지루한 것에서 벗어나 재미난 것 속으로 풍덩~☆

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

Recent Post

Recent Comment

Archive

break - for, while, until 루프문 빠져나가기

continue - for, while, until 루프문에서 한회 건너 뛰기

# - 주석

: - 널(null) 명령. 조건문의 논리를 단순화하기 위해 true 대신 사용되기도.
while :
do
...
done

: 구조는 조건적인 변수의 설정에 사용되기도 한다.
아래 내용은 var에 값이 없을경우 value를 대입한다. 앞의 :가 없으면 $var를 명령으로 평가하려고 하기 때문에 :를 써주어야 한다.
: ${var:=value}
이럴 때도 사용하기도 한다.
#!/bin/sh
rm -f fred
if [ -f fred ]; then
:
else
echo file fred did not exist
fi
exit 0

. - 현재 쉘에서 명령 실행
일반적으로 스크립트가 외부 명령이나 스크립트를 실행할 때는 새로운 환경(서브쉘)이 생성되어 새로운 환경에서 실행되기 때문에 그 환경은 부모 쉘로 반환되는 종료코드 외에는 무시되어버린다. 그러나 .명령은 현재 쉘에서 실행된다. 이것은 나중에 실행할 다른 어떤 명령을 위한 환경을 설정하기 위해 스크립트를 '랩퍼(wrapper)'로 사용할 때 종종 유용한데, 예를들면 동시에 여러 프로젝트를 작업중이라면 기존의 프로그램을 다루기 위한 구 버전의 컴파일러를 호출하는 등과 같은 때 사용할 수가 있다.

#!/bin/sh
# classic_set.sh
version=classic
PATH=/usr/local/old_bin:/usr/bin:/bin:.
PS1="classic>"

#!/bin/sh
# latest_set.sh
version=latest
PATH=/usr/local/new_bin:/usr/bin:/bin:.
PS1="latest version>"
$ . ./classic_set
classic> echo $version
classic
classic> . latest_set.sh
latest version> echo $version
latest
latest version>
eval - 인수를 평가하여 변수값의 값을 준다.
[CODE]#!/bin/bash foo=10 x=foo y='$'$x echo $y eval y='$'$x echo $y[/CODE]
exec - 현재 쉘을 다른 프로그램으로 대체
예를들어, 스크립트에서 다음은 현재 쉘을 wall 명령으로 대체할 것이다. 스크립트를 실행중이던 쉘은 더 이상 존재하지 않으므로 스크립트에서 exec 다음의 어떤 문장도 실행되지 않는다.
exec wall "Thanks for all the fish"
exit n - 스크립트가 종료 코드 n을 가지고 종료한다.
종료코드를 지정하지 않고 종료하면, 최종 실행된 명령의 상태가 반환값이 된다. 0은 성공을 가르키고, 코드 1부터 125까지는 스크립트에 의해 사용될 수 있는 에러코드이다. 즉 125개의 사용자 정의 에러코드를 사용가능한 것이다. 나머지 값은 이미 예약된 의미를 가진다.
종료코드 설명
126 파일이 실행 가능하지 않았다
127 명령이 발견되지 않았다.
128 이상 시그널이 발생했다.
export - 파라미터로 지정된 변수를 서브 쉘에서 유효하게 만든다.
export 명령은 파라미터로부터 환경 변수를 생성하는데 이 변수는 현재 프로그램이 호출하는 다른 스크립트와 프로그램에서 사용할 수 있다. 기술적으로 표현하면 익스포트된 변수는 쉘로부터 파생되는 어떤 자식 프로세스에서 환경 변수를 형성한다.
[CODE]#!/bin/sh # export2.sh echo "$foo" echo "$bar"[/CODE]
[CODE]#!/bin/sh # export1.sh foo="The first meta-syntatic variable" export bar="The second meta-syntatic variable" ./export2.sh[/CODE]

실행결과
$ ./export1.sh

The second meta-syntatic variable
$
명령 set -a나 set -allexport는 모든 변수를 export한다.
[CODE]#!/bin/sh # export3.sh set -a foo="The first meta-syntatic variable" export bar="The second meta-syntatic variable" ./export2.sh[/CODE]
실행결과
$ ./export3.sh
The first meta-syntatic variable
The second meta-syntatic variable
$
posted by progh2