我想从我的grep命令中排除一些文件,为此我使用参数:
--exclude=excluded_file.ext
Run Code Online (Sandbox Code Playgroud)
为了更容易阅读,我想使用带有排除文件的bash数组:
EXCLUDED_FILES=("excluded_file.ext")
Run Code Online (Sandbox Code Playgroud)
然后传递$ {EXCLUDED_FILES}数组grep,如:
grep -Rni "my text" --exclude=${EXCLUDED_FILES}
Run Code Online (Sandbox Code Playgroud)
我如何将数组作为参数传递给grep命令?
变量不作为参数传递给程序; 价值观是.变量(尤其是数组)由shell扩展为一个或多个单词,每个单词作为单独的参数传递给程序.在这种特定情况下,该--exclude选项将单个文件名作为其参数,因此您需要--exclude=foo从数组中构建多个参数.一种选择:
for f in "${EXCLUDED_FILES[@]}"; do
opts+=( --exclude="$f" )
done
grep -Rni "my text" "${opts[@]}"
Run Code Online (Sandbox Code Playgroud)
我猜你在找这个:
grep -Rni "${excluded_files[@]/#/--exclude=}" "my text"
Run Code Online (Sandbox Code Playgroud)
参数扩展"${excluded_files[@]/#/--exclude=}"将扩展为数组的扩展,excluded_files每个字段都以前缀为前缀--exclude=.看:
$ excluded_files=( '*.txt' '*.stuff' )
$ printf '%s\n' "${excluded_files[@]/#/--exclude=}"
--exclude=*.txt
--exclude=*.stuff
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
606 次 |
| 最近记录: |