2

この Unix の if/then ステートメントは、常に私を else ステートメントに入れます。バッシュを使用しています。

name="Don"
if [ "$name" == "Don" ]; then
  echo "Hi Don!"
else 
  echo "You are not Don. You are: $name"
fi

これは私の最初の Unix シェル スクリプトなので、当然のことだと思います。スタイル ガイドと他の if/then の例を確認しましたが、問題はありません: http://www.dreamsyssoft.com/unix-shell-scripting/ifelse-tutorial.php

4

3 に答える 3

4

POSIX シェルを使用している場合は、==. 代わりに を使用します===Bashに固有です。

name="Don"
if [ "$name" = "Don" ]; then
  echo "Hi Don!"
else 
  echo "You are not Don. You are: $name"
fi
于 2013-09-24T01:28:56.463 に答える
3

私はあなたのスクリプトを実行しましたが、期待どおりに動作しました。

これで完全なコードが切り取られた場合、おそらく bash を呼び出すのを忘れましたか? 「sh」で切り取ったものを実行すると、これはshに対して部分的に有効であるため、あなたが言ったように正確に動作するため、これを求めています。

だから私はあなたがこれを逃したと思います:

#!/bin/bash
name="Don"
if [ "$name" == "Don" ]; then
  echo "Hi Don!"
else 
  echo "You are not Don. You are: $name"
fi
于 2013-09-24T01:33:33.770 に答える
0

元のコードで間違っていたのは 1 つだけです。次の行です。

echo "Hi Don!"

シェルは特殊文字を解釈しようとしています 次の! 行の一重引用符の例を入れてみてください:

echo 'Hi Don!'
于 2013-10-28T21:10:25.710 に答える