如何使用一系列參數在linux的bash像60-70 - >($ -1 - $ 2)Linux的擊腳本如何使用的範圍內的參數
case $1 in
$1-$2)
echo "test"
shift;;
....) ....
如何使用一系列參數在linux的bash像60-70 - >($ -1 - $ 2)Linux的擊腳本如何使用的範圍內的參數
case $1 in
$1-$2)
echo "test"
shift;;
....) ....
一個case
語句的每個情況下是一個模式,但取決於範圍,指定一個好的模式可能會很棘手。 60-70
,例如,可以用
case $1 in
6[0-9] | 70) echo "test"
shift ;;
基本上匹配,你必須把這些數字作爲數字串,並與它們匹配的文本。例如,像67-93這樣的範圍分解爲相當笨重的東西
6[7-9] | [78][0-9] | 9[0-3]
你可以爲它製作一個函數。
當你有不同的範圍,作出這樣範圍的參數(檢查,最小值,最大值)。
返回1,當檢查< minimimum,0當內部邊界 (或等於邊界)檢查和2以上:
range() {
if [ "$1" -lt "$2" ]; then
return 1
fi
if [ "$1" -gt "$3" ]; then
return 2
fi
return 0
}
當你想爲不同範圍的不同的回報,改變該功能。 編輯:添加引號並做出正面的返回值。 編輯2:改變function x
爲x()
需要更多的報價,以避免一些不良值(空值,多字值,水珠字符等)引起的測試命令語法錯誤而不是(更傳統的)無效比較數據錯誤。如果你要使用POSIX不兼容'function'關鍵字,爲什麼不走整個生豬和使用非POSIX數學語法呢? 'if(($ 1 <$ 3))'等。另外,'-1'不是有效的返回值;只允許使用單字節整數,所以在處理的第一種情況下,它當前退出並出現錯誤。 –
好的,改變它。 –
好得多; LGTM。 –
你不能。病例陳述中的條款必須是單一值。你基本上是在做一個字符串,比如'$ 1'和'$ 1- $ 2'產生的字符串。 '情況下「富」 IN「富巴」)' –
他們不必爲單值;他們可以是模式。但是,模式不能很好地處理數字範圍。 – chepner
好的謝謝,但我需要一個解決方案,你能幫我嗎? @chepner –