[解決済み】Bashのif条件で「unary operator expected」エラーが発生する。
2022-01-27 02:15:20
質問
このスクリプトはエラーになります。
elif [ $operation = "man" ]; then
if [ $aug1 = "add" ]; then # <- Line 75
echo "Man Page for: add"
echo ""
echo "Syntax: add [number 1] [number 2]"
echo ""
echo "Description:"
echo "Add two different numbers together."
echo ""
echo "Info:"
echo "Added in v1.0"
echo ""
elif [ -z $aug1 ]; then
echo "Please specify a command to read the man page."
else
echo "There is no manual page for that command."
fi
こんなエラーが出ます。
calc_1.2: line 75: [: =: unary operator expected
解決するには?
Bashをいつも使うことがわかっている場合は、常に二重括弧の条件付き複合コマンドを使用する方がはるかに簡単です
[[ ... ]]
POSIX互換のシングルブラケット版ではなく
[ ... ]
. の中は
[[ ... ]]
複合語の場合、単語分割やパス名展開は適用されないので、単語分割やパス名展開に依存することができます。
if [[ $aug1 == "and" ]];
の値を比較する。
$aug1
という文字列と
{コード
.
を使用する場合
and
のように、変数をダブルクォートで囲むことを忘れないようにしましょう。
[ ... ]
変数の展開を引用せず、変数が未定義または空である場合、その変数は犯罪現場から消え、次のものだけが残ります。
if [ "$aug1" = "and" ];
という構文がありますが、これは有効な構文ではありません。(また、以下の場合は別のエラーメッセージで失敗します。
if [ = "and" ];
に空白文字やシェルのメタキャラクタが含まれていた場合)。
現代の
$aug1
演算子には、正規表現のマッチングをはじめ、他にも多くの優れた機能があります。
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 '\r': コマンドが見つかりません - .bashrc / .bash_profile [重複].
-
[解決済み] find -exec cp {} でエラー 'find: missing argument to -exec' が発生した場合の解決策。TARGET_DIR + [閉店]。
-
[解決済み] OS X で 'find' コマンドを使用して 'sed' を使用するとエラーが発生する。"無効なコマンドコードです。"
-
[解決済み] Curl:応答を待たない[重複]。
-
[解決済み] 構文エラー:オペランドが期待される(エラーメッセージは "+")。
-
[解決済み] パイプと二重パイプのどちらの OR 演算子を使うか?
-
[解決済み] シェルスクリプトでこのエラーを解決するにはどうしたらよいでしょうか。"読み取り。Illegal option -t "というエラーはどうすれば解決できますか?
-
[解決済み] ターミナルでbashスクリプトを実行するにはどうすればよいですか?
-
[解決済み] 環境変数を表示/エコーするには?
-
[解決済み] Bashで-zはどういう意味ですか?[重複しています]