通过source或“.” 加载执行过的脚本,由于是在当前shell中执行脚本,因此在脚本结束之后,脚本中的变量(包括函数)值在当前shell中依然存在,而sh和bash执行脚本都会启动新的子shell执行,执行完后退回到父shell。因此,变量和函数无法保留。
环境变量小结:
1、环境变量名通常要大写
2、环境变量可以在自身shell及子shell中使用
3、常用export来定义环境变量
4、执行env默认可以显示所有的环境变量
5、输出时用“$变量名”,取消时用“unset 变量名”
6、书写crond定时任务时要注意,脚本要用到的环境变量最好先在所执行的shell脚本中重新定义。
7、如果希望环境变量永久生效,则可以将其放在用户环境变量文件或全局环境变量文件里。
awk中的引用变量
awk \ETT | ETT=123 | ETT='oldgirl' | ETT="tingting" | ETT=`pwd` |
awk加双引号 | 本身 | 本身 | 本身 | 本身 |
awk不加引号 | 空 | 空 | 空 | 空 |
awk加单引号 | 正确输出 | 空 | 空 | 语法报错 |
awk加单引号后再同时加双引号 | 正确输出 | 正确输出 | 正确输出 | 正确输出 |
利用expr 判断是否为整数
i=6
expr $i + 6 &>/dev/null
echo $? 如果为0证明是整数
也可以用expr match
[root@BACKUP-1-51 ~]# expr match "12" "[0-9][0-9]*$"
2
[root@BACKUP-1-51 ~]# expr match "12vsdv" "[0-9][0-9]*$"
0
也可以用expr 判断文件扩展名是否符合要求
[root@BACKUP-1-51 ~]# expr "1.jpg" : ".*\.jpgf"
0
[root@BACKUP-1-51 ~]# expr "1.jpg" : ".*\.jpg"
5
[root@BACKUP-1-51 ~]# char="I am oldboy"
[root@BACKUP-1-51 ~]# expr length "$char" #计算字符串长度
11
[root@BACKUP-1-51 ~]# echo ${#char} #计算字符串长度
11
[root@BACKUP-1-51 ~]# echo $char | wc -L
11
[root@BACKUP-1-51 ~]# echo ${char} | awk '{print length($0)}'
11
[root@BACKUP-1-51 ~]# u=${k:-word}
[root@BACKUP-1-51 ~]# echo $u
word
[root@BACKUP-1-51 ~]# echo $k
[root@BACKUP-1-51 ~]# n=${k:=word}
[root@BACKUP-1-51 ~]# echo $n
word
[root@BACKUP-1-51 ~]# echo $k
word