2017-07-13 10 views
0

"& &"の二重括弧でテストし、elseステートメントに移動しないたびにNULL値に対して試しました。ifステートメント内のテストでヌルがキャッチされない

#!/bin/bash 
#find | grep 
#find -a {} | grep {search} 
function fg { 
     if [ -z $1 ] && [ -z $2 ]; then 
     echo "Help: find {path} | grep {search} " 

     else 
     find $1 | grep $2 

     fi 
} 

fg 
+0

$ 1と$ 2を引用して試しましたか? –

+0

はい、私は考えることができるすべてのバリエーションを試しました。私は変数に引数を割り当て、ifステートメントでそれらを適用しました。 – Hobnob

答えて

1

パラメータ拡張を常に引用します。

fg() { 
    if [ -z "$1" ] && [ -z "$2" ]; then 
    echo "Help: must specify path and regular expression" 
    else 
    find "$1" -regex "$2" 
    fi 
} 

fg 

未設定または空のパラメータをチェックするクリーンな方法は、しかし、:?オペレータを介してです。

fg() { 
    : ${1:?Missing path} 
    : ${2:?Missing regex} 
    find "$1" -regex "$2" 
} 
+0

私はコードのトップブロックを使用することができませんでしたが、下の1つを試して、hasntは任意のエラーのフラグを立てましたが、機能上の閉じ括弧の予期しないトークンを取得しているので、 – Hobnob

+0

遅く返事を申し訳ありませんが、コードの2番目のブロックを試してもまだ動作しませんでしたか? – Hobnob

関連する問題