前言
环境:Centos7.9
cat实用技巧
实用技巧1:输出多行字符
cat<< EOF
菜单大全:
青椒炒肉丝
凉拌黄瓜
铁锅炖大鹅
EOF
使用技巧2:覆盖或追加多行字符到文件
cat>>/etc/rc.local<< EOF #说明:这里的EOF没有加单引号,则shell默认会解析特殊字符,如遇$符号解析变量值
菜单大全:
青椒炒肉丝
凉拌黄瓜
我家:$PATH #这里将被解析成环境变量PATH的值
EOF
如果想内容就是字符串,不让shell自动解析怎么办?则在第1个EOF用单引号把括起来,如下:
cat>>/etc/profile<< 'EOF' #用单引号括起来
$JAVA_HMOE=/usr/local/java
PATH=$JAVA_HMOE/bin:$PATH
export PATH
EOF #最后这个EOF不需要加单引号,否则shell将识别不了结束符
注意:cat >>/etc/profile<< 'EOF'
还可以这样写:
cat<< 'EOF' >>/etc/profile #把EOF放在前面
$JAVA_HMOE=/usr/local/java
PATH=$JAVA_HMOE/bin:$PATH
export PATH
EOF #最后这个EOF不需要加单引号,否则shell将识别不了结束符
以上就是非常实用的cat命令技巧啦,比如在脚本中配置java的环境变量到/etc/profile
,如果EOF不加单引号,就会出错的喔。
使用技巧3:输出多行字符并通过管道符给其他命令
#使用管道符号直接将终端输出传递给其他命令
cat<<'EOF' | kubectl -n bar apply -f -
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
- name: v3
labels:
version: v3
EOF