shell中指定代码段的EOF加与不加引号有何不同

在 shell 中,可以通过 EOF 来指定一个多行的代码段,例如:

cat < ./zhetenga.sh

# do something

EOF

同时还有一样写法,就是给 EOF 加一个单引号:

cat <<'EOF' > ./zhetenga.sh

# do something

EOF

其实区别在于,如果加了引号,里面的内容不会再解析表达式,如果不加引号,表达式就会解析。

例如

cat <<'EOF' > ./zhetenga.sh

echo $0

EOF

zhetenga.sh 的内容将是 echo $0,而

cat < ./zhetenga.sh

echo $0

EOF

zhetenga.txt的内容将会是 echo -bash。

2015年05月15日