シェルスクリプトを記述しようとしていますthing.sh
実行可能にして、「A」という1文字で実行すると、次のようになります。
$ ./thing.sh A
出力を取得します
A
引数1がAでない場合、出力が必要です
Not A
これがこれまでの私のコードです:
#!/bin/bash
if [ "$1" -eq "A"]
then echo "A"
else echo "Not A"
fi
何を入力しても戻ります
./thing.sh: line 3: [:missing `]'
Not A
私は1つまたは複数の文字で何かをチェックし、それを文字Aと比較することを望んでいたものを試しています。これを機能させるために私が欠けているものを誰かに教えてもらえますか?ありがとうございました
短い方はどうですか?
#!/bin/bash
[[ $1 == A ]] && echo "A" || echo "not A"
?
そして初心者向けバージョン(同一のロジック):
#!/bin/bash
if [[ $1 == A ]]; then
echo "A"
else
echo "not A"
fi
スコットが言ったように、構文エラーがあります(スペースがありません)。
[[ $1 == A ]]
が実行され、真の場合はecho "A"
が実行され、偽の場合はecho "not A"
が実行されます。参照 http://mywiki.wooledge.org/ BashGuide/TestsAndConditionals[[
は、[
コマンドに似ていますが、より強力なbashキーワードです。 http://mywiki.wooledge.org/BashFAQ/031 および http://mywiki.wooledge.org/BashGuide/TestsAndConditionals を参照してください。POSIXsh用に作成している場合を除きます、[[
をお勧めします。最初の行を次のように変更します。
if [ "$1" == "A" ]
-eq演算子は整数用です。そして、他の誰かが述べたように、スペースは ']'の前に重要です。
ここを参照してください: http://tldp.org/LDP/abs/html/comparison-ops.html
"A"
と]
の間にスペースを入れてみてください。
「A」の後にスペースが必要です
if [ "$1" -eq "A" ]