単純なPython式の出力をif文の条件として使用したいと思います。わかりました
x=$(python3 -c "print('False')")
echo $x
出力が生成されるため、False
これが常に結果を生成する理由を理解できませんTrue
。
test () {
if [ $(python3 -c "print('$1')") ]
then
echo "True"
else
echo "False"
fi
}
test False
答え1
$(python3 -c "print('$1')")
一つだからひも論理値ではなく、[ ... ]
文字列が空でないことをテストします。
期待どおりに動作させるには、テストを次に変更してください。
if [ "$(python3 -c "print('$1')")" = "True" ]
ただし、test
関数名を使用すると、シェルの組み込み関数があいまいになるため、避けるべきですtest
。