2017-01-19 15 views
1

Bashスクリプトのif文に問題があります。ここでは、コードです:Bashのエスケープ記号@変数の変数

if [[ "$AppleID" -ne "" ]]; then 
    echo "<result>${AppleID}</result>" 
else 
    echo "No user logged in." 
fi 

次のように$AppleIDと仮定すると、エラーメッセージが「[email protected]」の値を持つ文字列です:

[[: [email protected]: syntax error: invalid arithmetic operator (error token is "@email.com") 

私は脱出するsedを使ってみましたこのような文字:

if [[ `echo $(printf '%q' $AppleID) | sed -e 's/[\/&]/\\&/g'` -ne "" ]]; then 

しかし、私は同じエラーが発生します。 @記号をエスケープするにはどうすればよいですか?

答えて

4

-neは、整数を比較するためのものです。ありがとうございました:) ...私はbashのにかなり新しいです

if [[ -n "$AppleID" ]]; then 
    echo "<result>${AppleID}</result>" 
else 
    echo "No user logged in." 
fi 
+0

:あなたは!=をしたい、またはより良いまだ、ちょうど-nを(その引数が空の文字列かどうかをテストしている)を使用します! –

関連する問題