是否有可能做一些類似於在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"`
測試:
[email protected]:~$ totaltracks=5
[email protected]:~$ totaltrackseval=`bash -c "if [[ $totaltracks -ge 0 ]]; then echo '-N $totaltracks'; else echo 'elsetext'; fi"`
[email protected]:~$ echo $totaltrackseval
-N 5
這對單引號內的$ totaltracks無效。 –
$ totaltracks位於if的TRUE部分中的單引號內,並且執行正確,您能澄清爲什麼這不會起作用嗎?一個具體的例子? – Nelson
因爲在單引號內,$ totaltracks引用不會被bash的實際值所取代。示例腳本: –
另一種方法,使用兩種類型的參數擴展。我假設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}
這是比我更清潔的解決方案,upvote。 – Nelson
謝謝,這工作完美。當我打勾時,我會做出迴應,但它已經是凌晨3點了,我想睡了:) –