我正在尝试构建一个ASCII数组,对于一个暴力脚本,我需要在数组中放入*和一个空格,但似乎没有任何效果。
我试过这个:
array[5]=*
array[5]="*"
array[5]='*'
array[5]=\*
array[5]="\*"
array[5]='\*'
但所有这些命令都将*扩展为当前工作目录中的所有文件,或至少在数组中放入“*”。
空白的相同故事。我该如何解决这个问题?
答案 0 :(得分:3)
以下分配的行为相同:
array[5]=*
array[5]="*"
array[5]='*'
因为没有在作业的RHS上执行路径名扩展。但是,在参数的不带引号的扩展上执行路径名扩展 :
$ echo "${array[5]}"
*
$ echo ${array[5]}
[every file in the current directory]
作业的RHS也不会进行分词,但你仍然需要引用 literal 空格。
$ foo="a b"
$ bar=$foo
$ printf '%s\n' "$bar"
a b
$ printf '%s\n' $bar
a
b