2016-04-14 28 views
0

私はbashスクリプトを学習しています。しかし、コードの下では本当に私を混乱させます。ifの位置パラメータが正常に動作しない

#!/bin/bash 
ifEqual() { 
    if [ "$3"="$1" ] ; then 
    echo "$2=$1" 
    else 
    echo "heiheihei" 
    fi 
} 
ifEqual "111" "666" 

この.shファイルを呼び出すと、 "666 = 111"が印刷されます。しかし、この関数には3番目のパラメータさえありません。私はこのコードが "平平氏"を印刷することを期待しています。誰も私にここで起こっていることを説明することはできますか?前もって感謝します!

+0

これは実質的には技術的には、http://stackoverflow.com/questions/9581064/why-should-be-there-a-space-after-and-before-in-the-bash-scriptの複製です異なった行方不明のスペースについて尋ねる。 –

答えて

3

test引数が正しく解析されるためには、=の周囲にスペースが必要です。

if [ "$3" = "$1" ]; then 

あなたがそれを書いた方法で、あなたは、単一の引数を持つtestを呼んでいる、そしてそれはちょうどその引数が空であるかどうかをテストします。その引数の値は=111なので、空ではないので、テストの結果は真です。

+0

Aha!そこに行く – Jaaaaaaay

関連する問題