プロが教えるわが家の防犯対策術!

bashで変数のなかに文字列があるか確認しようかと以下
構文を作りました。
if [ -z "$SAMPLE" ]; then
echo "文字が空です。"
fi

$SAMPLEの中を確認するとAWS の リスナーのARNを入れていたのですが
なぜか空判定となってしまします。
例:arn:aws:elasticloadbalancing:zzzzzz:11111:listener/app/avi-Trf/er56yks9/9galg0


特殊文字があるからでしょうか。

解決策わかる人教えて下さい。

A 回答 (4件)

>解決策わかる人教えて下さい。



sample.shというスクリプトだとしたら、

$ bash -x sample.sh

のように実行してみると何かわかるのではないかと思います。

実行結果がすごく長いのであれば、

$ bash -x sample.sh 2>&1 | less

みたいにlessに食わせて、SAMPLEというキーワードで検索しながら代入の様子を一つ一つ確認するとかですね。まあありがちなのは、途中で変数名を間違っているとかいう初歩的なミスだったりするのですが。
    • good
    • 0

その部分だけではなんともならないねぇ.



「$SAMPLEの中を確認する」ってのは, 具体的にはどうやってる? スクリプト全体を出すことはできない?

なお「bash の -z オプション」ではないし「構文を作る」とはいわない.
    • good
    • 0

変数の中身が空だからです。


> $SAMPLEの中を確認すると
確認手段が間違っているのでしょう。

if [ -z "$SAMPLE" ]; then
echo "文字<$SAMPLE>が空です。"
fi
と修正すると、「文字<>が空です。」と表示されるでしょう。

> 特殊文字があるからでしょうか。
関係ありません。

> 解決策わかる人教えて下さい。
コードを見ないとなんとも。
    • good
    • 1

[ -z ] が誤動作、というよりは、変数SAMPLEに入っているつもりが入っていない、の方が可能性が高いと思います。



SAMPLEに設定するシェルと if [ -z 〜のシェルが別で、変数SAMPLEの内容が伝わっていない、等。


どうやって確認しましたか?
bash -x で実行したり、echo $SAMPLEを追加したりして確認しましたか?
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!