1ドルは…?入力がありませんか?

1ドルは…?入力がありませんか?

この行で始まるプログラムがあります。どういう意味ですか?ドル記号のせいで Google で検索に問題があります。

$ 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 testtestと同じであるため[):

-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" ]
$ 

関連情報