2011-01-28 19 views
3

私は、ほとんどがブーリアンと条件付きで書かれているこのKornShell(ksh)スクリプトとちょっと混乱しています。KornShellブール条件付きロジック

私のスクリプトの最初の部分は、catmewcmeの両方がtrueまたはfalseのいずれかに設定されています。 echoを試してみたところ、期待通りの結果が得られました。その後、私はこのコードを持っています:

if [[ $catme ]] ; then 
    some commands 
fi 

そして私はwcmeでこれを繰り返します。しかし、予期せず、wcmecatmeが何であっても、私のifステートメント内のコマンドが実行されます。

これは構文エラーですか?私は[[ $catme -eq true ]]を試しましたが、どちらもうまくいかないようです。誰かが私を正しい方向に向けることができますか?

答えて

8

testおよび[は同じものです。

if $catme; then 
    some commands 
fi 

タイプman testの詳細情報を取得するために:それはこのようになりますので、あなたは、あなたのif文からtestコマンドを取り除く必要があります。例えば

$ v=true 
$ $v 
$ if $v; then 
> echo "PRINTED" 
> fi 
PRINTED 

$ v=false 
$ if $v; then 
> echo "PRINTED" 
> fi 
$ 
+0

を! 4分で受け入れます:) – Fred

0

ではなく[[ $catme == true ]]を試してみてください。

それでも、gahooaの回答はかなり良いです。

3

また、試行錯誤法試すことができます。これは、おかげで働い

if [[ true ]]; then echo +true; else echo -false; fi 
+true 
if [[ false ]]; then echo +true; else echo -false; fi 
+true 
if [[ 0 ]]; then echo +true; else echo -false; fi 
+true 
if [[ -1 ]]; then echo +true; else echo -false; fi 
+true 
if ((-1)); then echo +true; else echo -false; fi 
+true 
if ((0)); then echo +true; else echo -false; fi 
-false 
if ((1)); then echo +true; else echo -false; fi 
+true 
if [[ true == false ]]; then echo +true; else echo -false; fi 
-false 
if [[ true == true ]]; then echo +true; else echo -false; fi 
+true 
if true; then echo +true; else echo -false; fi 
+true 
if false; then echo +true; else echo -false; fi 
-false 
関連する問題