while read line;
do
awk '/ differ$/ {print "diff "$2" "$4" > "$2".diff"}{}';
done < diffs.txt
这将完全按照我的意愿打印命令。如何告诉它执行命令?
答案 0 :(得分:13)
| bash
可以解决问题......
while read line;
do
awk '/ differ$/ {print "diff "$2" "$4" > "$2".diff"}{}' | bash;
done < diffs.txt
答案 1 :(得分:5)
您可以使用“system”命令执行这些任务。
awk '/ differ$/ {system("diff "$2" "$4" > "$2".diff")} diffs.txt
答案 2 :(得分:0)
这个问题的接受答案(由@micheal提出)只是部分正确。它适用于几乎所有情况,除非命令需要创建新终端或伪终端。像'ssh'命令,或'tmux new'..
以下代码也适用于这些情况。
while read line;
do
$(awk '/ differ$/ {print "diff "$2" "$4" > "$2".diff"}{}')
done < diffs.txt
$()是bash命令替换模式。您可以在此处阅读有关Linux Documentation Project中命令替换的更多信息:http://www.tldp.org/LDP/abs/html/commandsub.html。