我正在尝试自己编写一些 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)
创建命令输出的临时文件。)