我在下面的代碼中使用了getopts
以及associate array
。 我無法弄清楚如何正確調用我的值,因爲我要求(2)使用相同標誌的別名。bash - 在bash腳本中使用getopts和關聯數組
這是我到目前爲止有:
#!/bin/bash
set -e
usage() {
echo "Usage: $0 -c alias1 -c alias2"
}
while getopts ":c:" opt; do
case $opt in
c) alias="$OPTARG";;
*) echo "Error unknown option -$OPTARG"
usage
exit 1
;;
esac
done
# Testing use off array
declare -A alias=([alias1]=myhost-01.com \
[alias2]=myhost-02.com \
[alias3]=myhost-03.com \
[alias4]=myhost-04.com)
echo "This is my source host:${alias}"
echo "This is my target host:${alias}"
這是我想執行它(或更好suggeested方式):
-bash-4.1$ ./test-array2.sh -c alias1 -c alias4
This is my source host:
This is my target host:
很顯然,我沒有得到我預期結果會是這樣的:
This is my source host: myhost-01.com
This is my target host: myhost-04.com
我該怎麼做?我想傳入(2)別名,它使用我的別名映射(關聯數組)來獲取正確的鍵值對,或者我的方法是錯誤的,我不能使用兩次-c
?謝謝。
IIRC,數組訪問是'$ {array [$ index]}'。所以我相信源將是'$ {alias [alias1]}'和目標$ {alias [alias4]}'。我通常會使用索引,即'alias1'的'0'insteead等,但這就是我。不過,我對Bash沒有太多的瞭解。 –
所以在命令行中通過編號調用它? './test-array2.sh -c 0 -c3'? – noober