[解決済み] Bashのif文で複数の条件を指定するとエラーが発生する
2022-03-07 14:22:29
質問
2つのエラーフラグをチェックし、片方(または両方)のフラグが変更された場合、echo--エラーが発生するスクリプトを書こうとしています。私のスクリプトです。
my_error_flag=0
my_error_flag_o=0
do something.....
if [[ "$my_error_flag"=="1" || "$my_error_flag_o"=="2" ] || [ "$my_error_flag"="1" && "$my_error_flag_o"="2" ]]; then
echo "$my_error_flag"
else
echo "no flag"
fi
基本的には、それに沿ったものであるべきです。
if ((a=1 or b=2) or (a=1 and b=2))
then
display error
else
no error
fi
というエラーが出ます。
line 26: conditional binary operator expected
line 26: syntax error near `]'
line 26: `if [[ "$my_error_flag"=="1" || "$my_error_flag_o"=="2" ] || [ "$my_error_flag"="1" && "$my_error_flag_o"="2" ]]; then'
括弧が乱れていませんか?
解決方法は?
使用方法
-a
(andの場合)と
-o
(orの場合)操作を行います。
tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
アップデート
実はまだ
&&
と
||
と共に
-eq
という操作を行います。つまり、スクリプトは次のようになります。
my_error_flag=1
my_error_flag_o=1
if [ $my_error_flag -eq 1 ] || [ $my_error_flag_o -eq 2 ] || ([ $my_error_flag -eq 1 ] && [ $my_error_flag_o -eq 2 ]); then
echo "$my_error_flag"
else
echo "no flag"
fi
しかし、あなたの場合、最後の2つの表現を捨てて、このように1つまたは操作に固執することができます。
my_error_flag=1
my_error_flag_o=1
if [ $my_error_flag -eq 1 ] || [ $my_error_flag_o -eq 2 ]; then
echo "$my_error_flag"
else
echo "no flag"
fi
関連
-
[解決済み] ssh / リモートbashコマンドでシングルクォート文字をエスケープするにはどうすればよいですか?
-
[解決済み] Bashを使ってプログレスインジケータを表示する [重複]。
-
[解決済み] Bashで最新のディレクトリを変数に取得する
-
解決策:bash: /root/.bashrc: パーミッションが拒否されました
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] Bashで、文字列がある値で始まっているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 複数行の出力をBash変数に取り込む
-
[解決済み] 特定のコマンドを無視するBashのエラー
-
[解決済み】bashで1つのコマンドでシェル変数にデフォルト値を割り当てる。
-
[解決済み】Bashのif, elif, else文の問題点
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 '\r': コマンドが見つかりません - .bashrc / .bash_profile [重複].
-
[解決済み] osx find exec rm find: exec: 不明な主またはオペレータ
-
[解決済み] Bashスクリプトで引数を反復処理する方法
-
[解決済み] sed で二重引用符と単一引用符をエスケープするにはどうしたらいいですか?
-
[解決済み] awk で行を飛ばすにはどうしたらいいですか?
-
[解決済み] bashで::演算子は何をするのですか?
-
[解決済み] IPアドレスのまとめ方
-
[解決済み] Grep 'binary file matches'. どうすれば正常なgrepの出力が得られるか?[重複]する
-
[解決済み] 環境変数を表示/エコーするには?
-
[解決済み】シェルのif文で複数の条件を表現するには?