有没有什么办法来关闭参数扩展这里文档中?
Shell命令:
$ cat > analyze.sh <<EOF
awk -F: '{print $NF}' asr.log | sort > tmp
awk -F '(' '{print $NF}' asr.log | awk '{print $1}' | sort > tmp2
EOF
我在analyze.sh得到这个:
awk -F: '{print }' asr.log | sort > tmp
awk -F '(' '{print }' asr.log | awk '{print }' | sort > tmp2
你需要使用引号分隔符:
$ cat > analyze.sh <<"EOF"
awk -F: '{print $NF}' asr.log | sort > tmp
awk -F '(' '{print $NF}' asr.log | awk '{print $1}' | sort > tmp2
EOF
这可以防止扩大此文档的外壳:
$ cat analyze.sh
awk -F: '{print $NF}' asr.log | sort > tmp
awk -F '(' '{print $NF}' asr.log | awk '{print $1}' | sort > tmp2
文档
这是记录在man bash
:
在这里,文件的格式为:
<<[-]word here-document delimiter
没有参数和变量扩展,命令替换,算术扩展,或路径扩展是在字执行。 如果word中任何字符被引用,分隔符是引用删除对词的结果,而在这里,文件中的行不会被扩展。 如果字是带引号的,此时此地文档中的所有行经受参数扩展,命令替换和算术扩展字符序列\被忽略,\必须使用引用字符\,$,和`。 [强调]
你可以引述EOF
禁用扩展:
cat > analyze.sh <<'EOF'
awk -F: '{print $NF}' asr.log | sort > tmp
awk -F '(' '{print $NF}' asr.log | awk '{print $1}' | sort > tmp2
EOF