shell脚本之其他常用小技巧

set有关

set -e  任何指令执行失败时退出脚本,同"set -o errexit"

set -o nountset   使用未声明变量时退出脚本

set -x 执行脚本时,输出正在执行的内容,涉及的变量也会被替换成实际值,方便调试

 

字符串转化数组

Array=(${str// / } )

其中
str为有空格的字符串

 

获取当前脚本绝对路径

pathdir=$(dirname `readlink -f $0`)

其中
dirname 去除文件名的非目录部分,仅显示有关目录的部分
readlink -f 找出符号连接(即软连接)所指向的位置
$0 表示脚本本身

 

脚本中创建文件并添加内容

cat > filename <<EOF
要添加的内容
EOF


其中
EOF为标识,提示结束开始的符号 EOF必须顶行写,前面不能用制表符或者空格

 

循环读取文本内容

FILE内容如下

1.1.1.2,node1,88
1.1.1.3,node2,80
1.1.1.4,node3,90
1.1.1.5,node4,99

脚本内容如下

#!/bin/bash
cat FILE|awk -F ',' '{print $1,$2,$3}'|while read IP Hostname Port
do
    echo "主机ip是:${IP},主机名是:${Hostname},主机端口是:${Port}"
done


其中
awk以指定分隔符","分隔文本内容,并输出前三列
while read 为循环接收awk输出的结果并赋值给IP,Hostname,Port

执行结果

主机ip是:1.1.1.2,主机名是:node1,主机端口是:88
主机ip是:1.1.1.3,主机名是:node2,主机端口是:80
主机ip是:1.1.1.4,主机名是:node3,主机端口是:90
主机ip是:1.1.1.5,主机名是:node4,主机端口是:99

 

posted @ 2020-07-11 10:30  junffzhou  阅读(210)  评论(0编辑  收藏  举报