在遍歷參數時,如何確定是否存在下一個參數?確定迭代遍歷參數時是否存在下一個參數
我試圖解決這個問題的方法是檢查下一個參數是否爲空,但遇到了一些問題。
在這個例子中,我打印當前參數的值,如果在此之後有參數,則打印一些消息。
我的方法:
使用$i+1
其中$i+1
會給你下一個索引值。
#!/bin/sh
for i in "[email protected]"
do
echo $i
if ! [ ${i+1}="" ]; then
echo "test"
fi
done
sh test 1 2 3 4 5
但這並不奏效。我也嘗試過expr i + 1
,但那不起作用。
如果有人可以給我一個關於如何解決這個問題的提示,這將是非常感激。
你在困惑自己的危險到'1'等等直到'$ 5'等於'5'。你可能想用'sh test 2 4 6 8 10'作爲一個簡單的替代方案;它會告訴你'$ i'不是一個參數號。 –
你需要知道'sh test abc''def''ghi'(它有5個參數給腳本,其中2和4是空字符串)會發生什麼。或者你是否想要確定在當前的論文之後是否存在另一個論點?默認情況下,shell將把'$ 6'的引用當作一個空字符串。一些shell有通過間接訪問變量的方法:在Bash中,可以使用:'x = 5; echo $ {!x}',並且在給定上面顯示的調用的情況下它會回顯'ghi'。所有的炮彈都有'eval',但是使用起來很危險。 OTOH,它在'all'shell中工作:'eval echo \ $$ x'也應該回顯'ghi'。 –