bash スクリプトで次のようなことを行うことは可能ですか?:
totaltrackseval=`if [[ $totaltracks -ge 0]]; then; echo '-N $totaltracks'; else; echo 'elsetext'; fi`
もしそうなら、どのように?
bash スクリプトで次のようなことを行うことは可能ですか?:
totaltrackseval=`if [[ $totaltracks -ge 0]]; then; echo '-N $totaltracks'; else; echo 'elsetext'; fi`
もしそうなら、どのように?
これはあなたが望むことをします。あなたはほとんどそれを最初に正しく理解しました。一重引用符を二重引用符に置き換えたことに注意してください。変数置換は一重引用符内では機能しません。また、テストにブラケットを使用する場合は、内側に空白のパディングが必要です。
totaltrackseval=`if [ $totaltracks -ge 0 ];
then
echo "-N $totaltracks"
else
echo "elsetext"
fi`
単一行の実装を希望する場合:
totaltrackseval=`if [ $totaltracks -ge 0 ]; then echo "-N $totaltracks"; else echo "elsetext"; fi`
次のようにできます。
totaltrackseval=`bash -c "if [[ $totaltracks -ge 0 ]]; then echo '-N $totaltracks'; else echo 'elsetext'; fi"`
テスト:
nelson@sev:~$ totaltracks=5
nelson@sev:~$ totaltrackseval=`bash -c "if [[ $totaltracks -ge 0 ]]; then echo '-N $totaltracks'; else echo 'elsetext'; fi"`
nelson@sev:~$ echo $totaltrackseval
-N 5
An alternate approach, using two types of parameter expansion. I am assuming that totaltracks
is either unset or has a non-negative integer value.
# Use an alternate value for totaltracks if it is set
totaltrackseval=${totaltracks:+-N $totaltracks}
# Use a default text if totaltrackseval still has no value
: ${totaltrackseval:=elsetext}