#! /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 ~]#