如何将*和空格放在Bash数组中?

时间:2018-04-29 17:14:25

标签: arrays bash

我正在尝试构建一个ASCII数组,对于一个暴力脚本,我需要在数组中放入*和一个空格,但似乎没有任何效果。

我试过这个:

array[5]=*
array[5]="*"
array[5]='*'
array[5]=\*
array[5]="\*"
array[5]='\*'

但所有这些命令都将*扩展为当前工作目录中的所有文件,或至少在数组中放入“*”。

空白的相同故事。我该如何解决这个问题?

1 个答案:

答案 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