入力後;ls
その対価でこれを受けました -bash: syntax error near unexpected token `;'
どうすれば解決できますか?
答え1
セミコロンはコマンドを終了します。改行文字は大丈夫なので、通常は必要ありません。しかし、以下を使用すると、1行に複数のコマンドを配置できます。
$ echo -n "hi "; echo there
hi there
それとももっと役に立つかもしれません:
if [ whatever ]; then
行の先頭にセミコロンを入れると、その前に空のコマンドが残ります。これは明らかにシェル構文では禁止されています。 Yashは便利なエラーメッセージを提供します。
$ yash -c '; echo hi'
yash -c:1: syntax error: a command is missing before ‘;’
KshとZshは問題を無視しているようです。
$ zsh -c '; echo hi'
hi
(しかし、isはとは異なり、likeは.とは異なるecho foo;;
ため、これらでも使用できません。はステートメントに使用されます。);;
;
>
>>
;;
case
空のコマンドは何もしないので、前のセミコロンを省略できます。それともZshに切り替えるのがいいようです。
答え2
次の構文エラーと同じです。
$ ;
bash: syntax error near unexpected token `;'
これcmd
だけ終了 ;
:
$ ls ;
この場合、;
次のように定義されたメタ文字です。
メタ文字が
引用されていない場合に単語を区切るために使用される文字。
;
複合コマンドと同じではありません。
if list; then list; else list; fi
この場合、これはコマンド構文の一部です。