是否可以在bash脚本中执行类似于以下内容的操作?:
totaltrackseval=`if [[ $totaltracks -ge 0]]; then; echo '-N $totaltracks'; else; echo 'elsetext'; fi`
若然,怎么样?
答案 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}