我正在努力传递变量中包含的几个 grep 模式。这是我的代码:
#!/bin/bash
GREP="$(which grep)"
GREP_MY_OPTIONS="-c"
for i in {-2..2}
do
GREP_MY_OPTIONS+=" -e "$(date --date="$i day" +'%Y-%m-%d')
done
echo $GREP_MY_OPTIONS
IFS=$'\n'
MYARRAY=( $(${GREP} ${GREP_MY_OPTIONS} "/home/user/this path has spaces in it/"*"/abc.xyz" | ${GREP} -v :0$ ) )
这就是我想要它做的事情:
- 确定/定义 grep 的位置
- 分配一个变量 (GREP_MY_OPTIONS) 保存我将传递给 grep 的参数
- 将几个模式分配给 GREP_MY_OPTIONS
- 使用 grep 和我存储在 $GREP_MY_OPTIONS 中的模式搜索包含空格的路径中的多个文件并将它们保存在数组中
当我使用“echo $GREP_MY_OPTIONS”时,它正在生成我所期望的,但是当我运行脚本时它失败并出现以下错误:
/bin/grep: 无效选项 -- ' '
我究竟做错了什么?如果路径中没有空格,一切似乎都可以正常工作,所以我认为这与 IFS 有关,但我不确定。