您需要使用[[
和]]
,不((
和))
。前者是測試,後者是表情評估其允許!=
但不-lt
。
最重要的是,你的第一個錯誤消息是稍微偏離,使得它聽起來像是你輸入的參數比你應該有,即使在你不輸入任何情況。這會更好的表述爲"Must enter exactly one argument"
。
而且,由於$#
是數字,我更喜歡在這種特殊情況下使用數字比較-ne
而不是!=
。
換句話說:
#!/bin/bash
#Assign1part1
if [[ $# -ne 1 ]]; then
echo "Error: Must enter exactly one argument" >&2
exit 1
fi
if [[ $1 -lt 1 ]]; then
echo "Error: Argument must be a positive integer" >&2
exit 1
fi
seq -s, $1 -1 1
運行與特定測試數據給出:
pax> testprog 5
5,4,3,2,1
pax> testprog 9
9,8,7,6,5,4,3,2,1
pax> testprog
Error: Must enter exactly one argument
pax> testprog 1 2
Error: Must enter exactly one argument
pax> testprog -7
Error: Argument must be a positive integer
bash的喜歡'(('和'))'。但是'(('不喜歡'-lt'。 –
嗯..你的意思是{{或[因爲[什麼也不做對我來說,似乎。 – Looking2learned
沒有,@ Looking2learned,絕對'[['和。?']' – paxdiablo