Bash スクリプトを使用してキーと値のペアの辞書を作成しようとしています。私はこのロジックを使用しようとしています:
declare -d dictionary
defaults write "$dictionary" key -string "$value"
... where$dictionary
は変数ですが、これは機能していません。
Bash スクリプトでキーと値のペアを作成する方法はありますか?
Bash スクリプトを使用してキーと値のペアの辞書を作成しようとしています。私はこのロジックを使用しようとしています:
declare -d dictionary
defaults write "$dictionary" key -string "$value"
... where$dictionary
は変数ですが、これは機能していません。
Bash スクリプトでキーと値のペアを作成する方法はありますか?
bash バージョン 4 では、連想配列が導入されました。
declare -A arr
arr["key1"]=val1
arr+=( ["key2"]=val2 ["key3"]=val3 )
arr 配列には、3 つのキーと値のペアが含まれるようになりました。Bash でできることはかなり限られていますが、並べ替えやポップなどはできません。
for key in ${!arr[@]}; do
echo ${key} ${arr[${key}]}
done
すべてのキー値をループしてエコーします。
注: Bash 4 は、GPLv3 ライセンスのため、Mac OS X には付属していません。ダウンロードしてインストールする必要があります。詳細については、こちらを参照してください
シンプルな区切り文字を使用できる場合、非常にシンプルなワンライナーは次のとおりです。
for i in a,b c_s,d ; do
KEY=${i%,*};
VAL=${i#*,};
echo $KEY" XX "$VAL;
done
ここにはやi
のような文字列が入ります。それぞれスペースで区切られています。その後、パラメーター置換を使用して、コンマの前の部分とその後の部分を抽出します。"a,b"
"c_s,d"
do
,
永続的なキー/値ストレージの場合、 https://github.com/damphat/kv-bashkv-bash
で入手可能なキー/値データベースの純粋な bash 実装である を使用できます。
使用法
git clone https://github.com/damphat/kv-bash
source kv-bash/kv-bash
いくつかの永続変数を作成してみてください
kvset myName xyz
kvset myEmail xyz@example.com
#read the varible
kvget myEmail
#you can also use in another script with $(kvget keyname)
echo $(kvget myEmail)
Using an example above this is what I did
#!/bin/sh
lookup_vht_index() {
for i in VHT20,0 VHT40,1 VHT80,2 VHT160,3 ; do
KEY=${i%,*};
VAL=${i#*,};
# echo $KEY" XX "$VAL;
[ "$1" = "$KEY" ] && echo $VAL
done
}
lookup_vht_name() {
for i in 0,VHT20 1,VHT40 2,VHT80 3,VHT160 ; do
KEY=${i%,*};
VAL=${i#*,};
# echo $KEY" XX "$VAL;
[ "$1" = "$KEY" ] && echo $VAL
done
}
echo "VHT20="$(lookup_vht_index "VHT20")
echo "2="$(lookup_vht_name 2)