Bash 中的变量执行

Bash 中的变量执行

我正在尝试自己编写一些 bash 脚本。

假设我想在行首添加“hi”,例如;

a="find . -type f"

$ for i in $a;do echo hi $i; done

但输出是:

hi find
hi .
hi -type
hi f

我想把每个变量执行的开始都作为文件输出,也就是这里,“hi”,我该怎么做呢?

编辑:我想在“a”变量输出的最前面添加 hi,但是这个脚本在每一行都添加 hi..

编辑:将类型 -f 改为 -type f,感谢@Terrance

可能输出;

hi ./me
hi ./you

抱歉,问题不清楚,我希望可以编辑工作......

答案1

您的for循环将其视为$a字符串并且不会执行它。

$(command)当您需要执行另一个命令内的某项操作时使用。

因此,在您的情况下您需要做的是(请不要这样做,而是按照下面的提示进行操作):

for i in $($a); do echo hi $i; done

附加提示:避免使用带有查找输出的 for 循环,因为当文件名包含空格时您会遇到问题。

对于你的情况,以下方法可以奏效:

a="find . -type f"
while IFS= read -r i; do
    echo "hi $i"
done < <($a)

<(command)创建命令输出的临时文件。)

相关内容