28

thing.shシェルスクリプトを実行可能ファイルにして実行すると、次のように「A」という単一文字で実行されるように、シェルスクリプトを作成しようとしています。

$ ./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と比較することを望んでいたことを試しています。これを機能させるために何が欠けているのか誰かに教えてもらえますか? ありがとうございました

4

4 に答える 4

47

短いものはどうですか:

#!/bin/bash

[[ $1 == A ]] && echo "A" || echo "not A"

?

そして初心者バージョン(同一のロジック):

#!/bin/bash

if [[ $1 == A ]]; then
    echo "A"
else
    echo "not A"
fi

スコットが言ったように、構文エラーがあります (スペースがありません)。

説明

于 2013-02-08T00:17:47.013 に答える
6

最初の行を次のように変更します。

if [ "$1" == "A" ]

-eq演算子は整数用です。そして、他の誰かが述べたように、スペースは「]」の前に重要です。

ここを参照してください:http://tldp.org/LDP/abs/html/comparison-ops.html

于 2013-02-08T00:21:16.900 に答える
4

"A"と の間にスペースを入れてみてください]

于 2013-02-08T00:17:44.640 に答える
4

「A」の後にスペースが必要です

if [ "$1" -eq "A" ]
于 2013-02-08T00:18:03.187 に答える