Unix / Linux-쉘 대체
대체 란 무엇입니까?
쉘은 하나 이상의 특수 문자를 포함하는 표현식을 발견하면 대체를 수행합니다.
예
여기서 변수의 인쇄 값은 해당 값으로 대체됩니다. 동시에,"\n" 새 줄로 대체-
#!/bin/sh
a=10
echo -e "Value of a is $a \n"
다음 결과를 받게됩니다. 여기-e 옵션을 사용하면 백 슬래시 이스케이프를 해석 할 수 있습니다.
Value of a is 10
다음은없는 결과입니다. -e 옵션-
Value of a is 10\n
echo 명령에서 사용할 수있는 다음 이스케이프 시퀀스-
Sr. 아니. | 탈출 및 설명 |
---|---|
1 | \\ 백 슬래시 |
2 | \a 경고 (BEL) |
삼 | \b 역행 키이 |
4 | \c 후행 줄 바꿈 억제 |
5 | \f 양식 공급 |
6 | \n 새 줄 |
7 | \r 캐리지 리턴 |
8 | \t 수평 탭 |
9 | \v 수직 탭 |
당신은 사용할 수 있습니다 -E 백 슬래시 이스케이프 해석을 비활성화하는 옵션 (기본값).
당신은 사용할 수 있습니다 -n 새 줄 삽입을 비활성화하는 옵션.
명령 대체
명령 대체는 쉘이 주어진 명령 세트를 수행 한 다음 명령 대신 출력을 대체하는 메커니즘입니다.
통사론
명령 대체는 명령이 다음과 같이 주어질 때 수행됩니다.
`command`
명령 대체를 수행 할 때 작은 따옴표가 아닌 역 따옴표를 사용해야합니다.
예
명령 대체는 일반적으로 명령의 출력을 변수에 할당하는 데 사용됩니다. 다음 예제는 각각 명령 대체를 보여줍니다.
#!/bin/sh
DATE=`date`
echo "Date is $DATE"
USERS=`who | wc -l`
echo "Logged in user are $USERS"
UP=`date ; uptime`
echo "Uptime is $UP"
실행하면 다음과 같은 결과를 받게됩니다.
Date is Thu Jul 2 03:59:57 MST 2009
Logged in user are 1
Uptime is Thu Jul 2 03:59:57 MST 2009
03:59:57 up 20 days, 14:03, 1 user, load avg: 0.13, 0.07, 0.15
가변 대체
변수 대체를 사용하면 쉘 프로그래머가 상태에 따라 변수 값을 조작 할 수 있습니다.
가능한 모든 대체에 대한 다음 표는 다음과 같습니다.
Sr. 아니. | 양식 및 설명 |
---|---|
1 | ${var} var 값을 대체하십시오 . |
2 | ${var:-word} 경우 var에 null 또는 해제는, 단어는 대체됩니다var. var 의 값은 변경되지 않습니다. |
삼 | ${var:=word} 경우 var에 null 또는 해제는, VAR는 값으로 설정됩니다word. |
4 | ${var:?message} 경우 var에 null 또는 설정 해제, 메시지를 표준 오류에 인쇄됩니다. 이것은 변수가 올바르게 설정되었는지 확인합니다. |
5 | ${var:+word} 경우 VAR이 설정되어, 단어 VAR 대체됩니다. var 의 값은 변경되지 않습니다. |
예
다음은 위 대체의 다양한 상태를 보여주는 예입니다.
#!/bin/sh
echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}"
echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}"
unset var
echo ${var:+"This is default value"}
echo "3 - Value of var is $var"
var="Prefix"
echo ${var:+"This is default value"}
echo "4 - Value of var is $var"
echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"
실행하면 다음과 같은 결과를 받게됩니다.
Variable is not set
1 - Value of var is
Variable is not set
2 - Value of var is Variable is not set
3 - Value of var is
This is default value
4 - Value of var is Prefix
Prefix
5 - Value of var is Prefix