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

另一种方法,使用两种类型的参数扩展。我假设它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}
于 2012-10-01T17:09:07.857 回答