在反叛内部进行比较

时间:2012-10-01 16:43:06

标签: bash

是否可以在bash脚本中执行类似于以下内容的操作?:

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

若然,怎么样?

3 个答案:

答案 0 :(得分: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`

答案 1 :(得分: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

答案 2 :(得分:0)

另一种方法,使用两种类型的参数扩展。我假设totaltracks未设置或具有非负整数值。

# 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}