shell脚本内cat创建shell脚本注意的地方——筑梦之路

from–https://blog.csdn.net/qq_34777982/article/details/126886108

# 直接在shell输出多行字符串

cat << EOF
>aaa
>bbb
>ccc
>ddd
EOF

# 覆盖字符串

cat > /root/abc.txt < EOF
>这个是
>this is
>测试
EOF

# 覆盖字符串 原样输出
cat > /root/abc.txt < ‘EOF’
>aaa
>bbb
>3333
EOF

# 追加多行字符

#说明:这里的EOF没有加单引号,则shell默认会解析特殊字符,如遇$符号解析变量值

cat >> /etc/rc.local << EOF
>菜单大全:
>青椒炒肉丝
>凉拌黄瓜
>我家:$PATH #这里将被解析成环境变量PATH的值
EOF

# 追加字符串 原样输出

# 说明:#用单引号括起来 原样输出字符不解析shell

cat >> /etc/profile << ‘EOF’ #用单引号括起来
>$JAVA_HMOE=/usr/local/java
>PATH=$JAVA_HMOE/bin:$PATH
>export PATH
EOF

#最后这个EOF不需要加单引号,否则shell将识别不了结束符

# 同上,另一种方式
cat << ‘EOF’ >> /etc/profile #把EOF放在前面
>$JAVA_HMOE=/usr/local/java
>PATH=$JAVA_HMOE/bin:$PATH
>export PATH
EOF

#最后这个EOF不需要加单引号,否则shell将识别不了结束符
注意的地方:

EOF加引号和不加引号的区别;

当第一个EOF不加引号时,字符串中的变量或命令会被shell解析,将解析的结果输出;

当第一个EOF加上单引号时,字符串中的变量或者命令不会被shell解析,会将字符串原样输出。

上一篇
下一篇