1달러는 ....을 의미합니다. 아무런 입력도 없이?

1달러는 ....을 의미합니다. 아무런 입력도 없이?

이 줄로 시작하는 프로그램이 하나 있습니다. 이것은 무엇을 의미 하는가? 달러 기호 때문에 인터넷 검색에 어려움을 겪고 있습니다.

매개변수 없이 어떻게 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" ]
$ 

관련 정보