이 줄로 시작하는 프로그램이 하나 있습니다. 이것은 무엇을 의미 하는가? 달러 기호 때문에 인터넷 검색에 어려움을 겪고 있습니다.
매개변수 없이 어떻게 1달러가 나오나요? 그리고 여기서 -d는 무엇을 의미합니까?
if [ -d $1 ]; then
그리고 if 조건이 시작되지 않아도 세미콜론이 나오나요? 나는 세미콜론이 문장의 끝이나 다음과 같은 조건의 끝에만 오는 줄 알았는데
if () { };
답변1
해당 컨텍스트가 끝나는 위치(세미콜론, 개행 등을 통해)를 표시하지 않으면 if
조건이 끝나는 위치와 조건 블록이 시작되는 위치를 알 수 없기 때문에 세미콜론이 필요합니다. 비교하다:
$ if echo then foo then; then :; fi
then foo then
$ if echo then; then :; fi
then
-d
다음 인수가 디렉터리인지 확인하는 테스트입니다. 에서 help test
( test
와 동일하기 때문에 [
):
-d FILE True if file is a directory.
예를 들어:
$ mkdir foo
$ if [ -d foo ]; then
> echo foo is a dir
> fi
foo is a dir
$1
프로그램에 전달되는 첫 번째 인수입니다. 예를 들어:
$ cat > script << 'EOF'
> #!/bin/sh
> echo "$1"
> EOF
$ chmod +x script
$ ./script foo
foo
여담으로, $1
여기에 인용해야 합니다. 그렇지 않으면 여러 인수로 확장되어 다음에서 구문 오류가 발생할 수 있기 때문입니다 [
.
$ dir="foo bar"
$ [ -d $dir ]
sh: 2: [: foo: unexpected operator
$ [ -d "$dir" ]
$