0

我正在编写一个 bash 脚本,其中我正在自动创建一些基本的测试输入文件。

由于数据的结构方式,我的脚本中有一部分我想@在关联数组的某些键中使用字符。

从粗略的回声测试来看,似乎没有任何问题:

$ declare -A arr
$ arr[1]=hello
$ arr[2]=world
$ arr[@1]=foo
$ arr[@2]=bar
$ for var in "${!arr[@]}"; do echo "key: ${var}, value: ${arr[$var]}" ; done
key: @1, value: foo
key: 1, value: hello
key: @2, value: bar
key: 2, value: world

但是由于@is a special character,我想知道这种键分配是否安全,如果不是,我能做些什么来使它更安全?

4

1 回答 1

0

@下,作为关联数组键名的一部分使用没有问题。

Bash 在转换为 base64 时使用at @下划线 _作为字母数字,按以下顺序:

0..9 a..z A..Z @ _

$ echo {0..9} {a..z} {A..Z} @ _

试试这个:

$ echo $((64#10))
64
$ echo $((64#_))
63
$ echo $((64#@))
62
$ echo $((64#Z))
61
$ echo $((64#A))
36
$ echo $((64#z))
35
$ echo $((64#a))
10

所以在下,这可能没问题。

评论

但警告:如果您的脚本成为应用程序可能不是开发语言的好选择。

于 2013-09-18T17:08:50.183 回答