在bash脚本中,我需要这样做:
cat<<EOF> ins.exe
grep 'pattern' file | awk '{print $2}' > results
EOF
问题是$ 2被解释为一个变量,ins.exe文件最终包含 &#34; grep&#39;模式&#39;档案| awk&#39; {print}&#39; &GT;结果&#34;,没有$ 2。
我尝试过使用
echo "grep 'pattern' file | awk '{print $2}' > results" >> ins.exe
但它也是同样的问题。
我该如何解决这个问题?
答案 0 :(得分:3)
逃避$
:
cat<<EOF> ins.exe
awk '/pattern/ { print \$2 }' file > results
EOF
顺便说一句,无需将grep传递给awk。
使用bash,您还有另一个选项,即使用<<'EOF'
。这意味着字符串中不会发生扩展。