在bash脚本

时间:2017-09-18 02:24:18

标签: bash glob

关于这个问题有很多问题,但我似乎无法做到这一点。

我有一个脚本,它为变量分配一个特定路径,并在其中添加一个带*的文件名。如果路径中有空格,我无法正确评估脚本。

假设变量设置为:

var="/path/with/a space/in/it/"*.jpg

如果我尝试类似

的话
for i in $var
do
  echo "$i"
done

该脚本根本找不到任何文件,只会吐出var的值,其中包含*,在空格处分成两个:

/path/with/a
space/in/it/"*.jpg

那么有没有办法让它将变量作为正确的路径处理?

This提供了一些帮助,但它并不像我想的那样有效。

1 个答案:

答案 0 :(得分:3)

由于这是bash,您可以将var作为一个数组(参见this Unix.SE question on expanding globs):

shopt -s nullglob

var=("/path/with/a space/in/it/"*.jpg)

for i in "${var[@]}"
do
  echo "$i"
done