Bash
如何在變數上強製字元串類型?
我有這個腳本:
#!/bin/bash USERS=("user1.com" "user2.co.uk" "user3.com") PASSES=("pass1" "pass2" "pass3") for i in ${USERS[@]}; do echo ${PASSES[i]}; done
執行此腳本輸出:
my-script.sh:第 6 行:user1.com:語法錯誤:算術運算符無效(錯誤標記為“.com”)
但是,我的值用引號括起來,據我所知,
echo
這不是算術運算。來自 PHP 背景,這令人困惑。在 PHP 中,我們可以這樣做:
echo gettype($string); echo gettype($int);
哪個輸出
字元串
整數然而,報價似乎並不像我想的那樣。如何強制使用字元串而不是對待
user1.com
asuser1
.
com
?
您目前的程式碼擴展為
for i in user1.com user2.co.uk user3.com; do echo ${PASSES[i]}; done
這當然毫無意義。間接運算符生成一個數組索引列表:
bash$ echo "${!USERS[@]}" 0 1 2
因此,您可以遍歷各個索引。讓我們也添加正確的引用。
for i in ${!USERS[@]}; do echo "${PASSES[i]}" done
對於完整點,您不應該對私有變數使用大寫;大寫變數名保留給系統使用。