小编Rog*_*hin的帖子

Bash:子shell中的转义引号

当我执行以下命令时:

#!/bin/bash
while IFS= read -r -d '' file; do
    files+=$file
done < <(find -type f -name '*.c' -print0)
echo "${files[@]}"
Run Code Online (Sandbox Code Playgroud)

我没有得到与此相同的结果:

#!/bin/bash
find_args="-type f '*.c' -print0"
while IFS= read -r -d '' file; do
    files+=$file
done < <(find $find_args)
echo "${files[@]}"
Run Code Online (Sandbox Code Playgroud)

如何将第二个场景修复为与第一个相同?

我的理解是,因为双引号中有单引号,单引号会被转义,这会产生一个糟糕的扩展,看起来像这样:

find -type f -name ''\''*.c'\'' -print0
Run Code Online (Sandbox Code Playgroud)

bash quoting escape-characters subshell

3
推荐指数
1
解决办法
1868
查看次数

标签 统计

bash ×1

escape-characters ×1

quoting ×1

subshell ×1