ケースステートメントのフォールスルー?
2023-09-05 11:02:04
質問
一般的な命令型言語では、switch文はcase文にマッチすると次のレベルにフォールスルーされるのが一般的です。
例
int a = 2;
switch(a)
{
case 1:
print "quick ";
case 2:
print "brown ";
case 3:
print "fox ";
break;
case 4:
print "jumped ";
}
は "brown fox" と表示されます。
しかし、同じコードをbashで実行すると
A=2
case $A in
2)
echo "QUICK"
;&
2)
echo "BROWN"
;&
3)
echo "FOX"
;&
4)
echo "JUMPED"
;&
esac
は "BROWN"のみを表示します。
最初の例のように、bashのcase文が"fall through"で残りの条件になるようにするにはどうしたらよいでしょうか。
(編集: Bashバージョン3.2.25では、;&ステートメント( wikiより ) はシンタックスエラーになります)
を実行しています。
test.shを実行します。
#!/bin/bash
A=2
case $A in
1)
echo "QUICK"
;&
2)
echo "BROWN"
;&
3)
echo "FOX"
;&
esac
与える。
./test.sh: 6行目: 予期しないトークン付近のシンタックスエラー
;' ./test.sh:
;&'
line 6:
どのように解決するのですか?
この場合
;&
と
;;&
演算子は bash 4.0 で導入されたので、5年前のバージョンの bash にこだわるのであれば、コードを繰り返すか、あるいは
if
s.
if (( a == 1)); then echo quick; fi
if (( a > 0 && a <= 2)); then echo brown; fi
if (( a > 0 && a <= 3)); then echo fox; fi
if (( a == 4)); then echo jumped; fi
または、実際の目標を達成するための他の方法を見つけてください。
(余談ですが はすべて大文字の変数名を使用しないでください。 . 特殊なシェル変数や環境変数を上書きしてしまう危険性があります)。
関連
-
[解決済み] Bashで文字列を小文字に変換する方法は?
-
[解決済み] bashのタブ補完はどのように機能するのですか?
-
[解決済み] 複数のbashスクリプトにまたがってpushd/popdのスタックを表示しない (quiet pushd/popd)
-
[解決済み] 指定した名前のDockerコンテナが存在しない場合のみ、Bashコマンドを実行するにはどうすればよいですか?
-
[解決済み] bashでファイル(引数)を編集しているコマンドを "その場 "で実行するには?
-
[解決済み] 指定された時間/日付まで眠る
-
[解決済み] Bashの引数で引用符を維持するには?重複
-
[解決済み] Bash。フォルダ構造を保持したまま再帰的に名前付きファイルをコピーする
-
[解決済み] Bashでforループを書くには?
-
[解決済み] Bash: 関数をパラメータとして渡す
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Bashやシェルスクリプトの変数の大文字小文字を正しく表記する。
-
[解決済み] bashのループリストで空白をエスケープするには?
-
[解決済み] bashでWebサーバーの応答を待つループを作成するには?
-
[解決済み] 指定した名前のDockerコンテナが存在しない場合のみ、Bashコマンドを実行するにはどうすればよいですか?
-
[解決済み] BASHでAWS S3 CLIを使用して標準出力にファイルをダンプするには?
-
[解決済み] bash スクリプトで ENTER キー押下をシミュレートする
-
[解決済み] Unixで、カレントディレクトリ以下をすべて削除するにはどうしたらいいですか?
-
[解決済み] ループ内でユーザー入力を読み取る
-
[解決済み] Bash。フォルダ構造を保持したまま再帰的に名前付きファイルをコピーする
-
[解決済み] Bashを使用してJARからMANIFEST.MFファイルを読み込む方法