0

bash スクリプトで次のようなことを行うことは可能ですか?:

totaltrackseval=`if [[ $totaltracks -ge 0]]; then; echo '-N $totaltracks'; else; echo 'elsetext'; fi`

もしそうなら、どのように?

4

3 に答える 3

3

これはあなたが望むことをします。あなたはほとんどそれを最初に正しく理解しました。一重引用符を二重引用符に置き換えたことに注意してください。変数置換は一重引用符内では機能しません。また、テストにブラケットを使用する場合は、内側に空白のパディングが必要です。

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`
于 2012-10-01T16:50:12.653 に答える
1

次のようにできます。

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
于 2012-10-01T16:51:37.007 に答える
0

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}
于 2012-10-01T17:09:07.857 に答える