私のBash-Scriptは、変数の先頭に応じて、何か別のことを行わなければなりません。 私は次のスクリプトを実行すると:Linux bash if - elifが期待どおりに動作しない
#!/bin/bash
line="__B something"
if [ -n $(echo "$line" | grep "^__A") ]; then
echo "Line __A"
elif [ -n $(echo "$line" | grep "^__B") ]; then
echo "Line __B"
elif [ -n $(echo "$line" | grep "^__C") ]; then
echo "Line __C"
elif [ -n $(echo "$line" | grep "^__D") ]; then
echo "Line __D"
elif [ -n $(echo "$line" | grep "^__E") ]; then
echo "Line __E"
elif [ $(echo "$line" | grep "^__F") ]; then
echo -n "Line __F"
else
echo "something other"
fi
バッシュは__B:
出力付き文字列の先頭のであることを認識しません:
Line __A
私のスクリプトの何が問題なのですが? ありがとうございます!
あなたが最後に置き忘れように、それは '見えます-n' – Matthias
もっと引用符を使う! 'if [-n" $(echo ...) "];それから。パラメータの拡張を引用してください! (しかしあなたのデザインはとにかくかなり悪いです)。 –
@gniourf_gniourf:あなたが表示するスナップだけでなく、* whole * 'echo | grep'コマンドを二重引用しようとすると、' $ line'の埋め込みスペースを考えると、それほど単純ではないことがわかります。 – cdarke