#! /bin/bash LOG_DIR=/var/log ROOT_UID=0 if [ "$UID" -ne "$ROOT_UID" ] then echo "Must be root to run this script" exit 1 fi cd $LOG_DIR || { echo "Cannot change to necessary directory." >&2 exit 1 } #不能进入log的目录才执行后面的括号里面的 cat /dev/null > messages && echo "Logs cleaned up." exit 0 # 退出之前返回0表示成功,返回1表示失败 当shell 脚本以非交互方式(文件方式)运行时,它会先查找环境变量ENV(通常是.bashrc, .bash_profile , /etc/bashrc , /etc/profile) for 条件 do 内容 done if [ 条件 ] then 内容 Fi 或者 if [ 条件 ];then 指令 fi [root@node1 ~]# for i in {1,2};do echo $i ;done 1 2 [root@node1 ~]# for((i=1;i<10;i++));do echo "$i" ;done 1 2 3 4 5 6 7 8 9 [root@node1 ~]# [root@node1 ~]# a=192.168.1.2 [root@node1 ~]# b='192.168.1.2' [root@node1 ~]# c="192.168.1.2" [root@node1 ~]# echo "a=$a" a=192.168.1.2 [root@node1 ~]# echo "b=$b" b=192.168.1.2 [root@node1 ~]# echo "c=${c}" c=192.168.1.2 [root@node1 ~]# [root@node1 ~]# a=192.168.1.2-$a [root@node1 ~]# b='192.168.1.2-$a' [root@node1 ~]# c="192.168.1.2-$a" [root@node1 ~]# echo "a=$a" a=192.168.1.2-192.168.1.2 [root@node1 ~]# echo "b=$b" b=192.168.1.2-$a [root@node1 ~]# echo "c=${c}" c=192.168.1.2-192.168.1.2-192.168.1.2 [root@node1 ~]# 单引号定义的变量原样输出,无论是否为变量,都不会解析。 双引号定义的变量会把引号里面的变量及命令都解析输出。(常用) [root@node1 ~]# echo 'today is date' today is date [root@node1 ~]# echo "today is date" today is date [root@node1 ~]# echo "today is `date`" today is 2018年 11月 17日 星期六 23:17:47 CST [root@node1 ~]# echo "today is $(date)" today is 2018年 11月 17日 星期六 23:18:25 CST [root@node1 ~]# oldboy=teacher [root@node1 ~]# echo $oldboy teacher [root@node1 ~]# echo '$oldboy' $oldboy [root@node1 ~]# echo "$oldboy" teacher [root@node1 ~]# [root@node1 ~]# for((i=0;i<10;i++));do echo $i;done #备注:注意括号 0 1 2 3 4 5 6 7 8 9 [root@node1 ~]# [root@node1 ~]# basename /home/appuser/a.sh a.sh [root@node1 ~]# dirname /home/appuser/a.sh /home/appuser [root@node1 ~]#