$1 は .... ? 入力なしを意味しますか?

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

関連情報