BASH 讀取傳入值的坑
那些年的心酸血淚
文章目錄
進入正題前想到這則推特,真是心情寫照阿!
Debugging is like being the detective in a crime movie where you are also the murderer.
— Filipe Fortes (@fortes) November 10, 2013
最近利用 bash 寫測試程式,需要將參數傳入 function 內
#!/bin/bash
test() {
echo $1
}
test "foobar"
今天卻遇到個百思不得其解的問題,程式、參數大致看起來沒有問題
#!/bin/bash
test() {
echo $1 $2 ... $9 $10
}
test "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
程式輸出卻變成
$ ./test.sh
a b ... i a0
第十個參數按理來說應該是 j
卻變成 a0
?
稍微測試後發現 BASH 做語法處理時會將多位數的參數,如 $10
視為 $1
跟 0
致使讀錯變數,解法也相當簡單只要用 {}
包起來避免混淆
test() {
echo $1 $2 ... $9 ${10}
}
先前在修改程式時 IDE 會協助自動上色,看到下面圖示 $10
的上色還以為 plugin 有 bug
殊不知是我腦袋有 bug…
文章內容的轉載、重製、發佈,請註明出處: https://tachingchen.com/tw/
Twitter
Google+
Facebook
Reddit
LinkedIn
StumbleUpon
Pinterest
Email