何を;; shでしますか?


28

a;;bshで実行しようとすると、次のエラーが表示されます。

sh: <number>: Syntax error: ";;" unexpected

しようa;;;bとすると、では;;;なく同じエラーが発生する;;ので、それ;;は何かを意味すると思いますが、それが何を意味するのか分かりません。

以下に例を示します。

$ echo A;;echo B
sh: 1: Syntax error: ";;" unexpected
$ echo A;;;echo B
sh: 1: Syntax error: ";;" unexpected
$ echo A; ;echo B
sh: 1: Syntax error: ";" unexpected

ここ; ;;;;以前にコマンドなしで使用したという事実に関連して、エラーの代わりに使用すると異なることがわかります。;;私はそれが何に適用されるのか分かりませんが、別の演算子のようです。


1
のせいでGoogleで検索できず;;、ここでhereを見つけられませんでした。
-EKons

3
グーグル「shダブルセミコロン」... stackoverflow.com/questions/16905183/…–
muru

@muruここにはまだ掲載されていませんが、私は思う。
-EKons

@ΈρικΚωνσταντόπουλοςそれは、symbolHoundがsymbolhound.comであるものです
ジョー

回答:


47

;;POSIXシェルのcase... esacコンストラクトのステートメントを分離します。

case foo in (a) cmd1; cmd2 ;; (b) cmd3; cmd4; esac

コマンドについて調べるには、を実行しman that-commandます。ページャーがの場合、をless押してマニュアルページ内を検索できます/

ここでは、を実行man shして検索し;;ます。一部のシェルは、caseステートメントを分離する他の演算子をサポートしています(;&in ksh93/ zsh/ bash/ mksh&|in zsh/ mksh;;&inなどbash)。


1
ここに投稿したのは、とにかくそのような質問があるはずだと思うからです。ここでは、誰かが混乱している場合、より明確な方法で説明できるからです。
EKons

2
多数のヒットがある場合、またはで検索するためのエスケープルールを思い出せない場合はless、次の場合に便利です$ man bash|grep -C1 ';;'
アンハンマー

あなたは(a)b)、とする必要はありませんし、;;後が必要ですcmd4
バーマー

@Barmar、その構文はPOSIXです。Bourneシェルでは、(実際には省略しなければなりませんでしたが、;;以前は必要ありesacませんでした(害はありませんでした)。
ステファンシャゼラス

ありがとう。POSIXシェルの変更については知りませんでしたが、最後の変更;;はオプションでした。
バーマー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.