linux shell 指令 诸如-d, -f, -e之类的判断表达式:
文件比较运算符
-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]
-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ]
-L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 如果 filename可读,则为真 [ -r /var/log/syslog ]
-w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ]
-x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ]
filename1-nt filename2 如果 filename1比 filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
filename1-ot filename2 如果 filename1比 filename2旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]
字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string 如果 string长度为零,则为真 [ -z "$myvar" ]
-n string 如果 string长度非零,则为真 [ -n "$myvar" ]
string1= string2 如果 string1与 string2相同,则为真 [ "$myvar" = "one two three" ]
string1!= string2 如果 string1与 string2不同,则为真 [ "$myvar" != "one two three" ]
算术比较运算符
num1-eq num2 等于 [ 3 -eq $mynum ]
num1-ne num2 不等于 [ 3 -ne $mynum ]
num1-lt num2 小于 [ 3 -lt $mynum ]
num1-le num2 小于或等于 [ 3 -le $mynum ]
num1-gt num2 大于 [ 3 -gt $mynum ]
num1-ge num2 大于或等于 [ 3 -ge $mynum ]
这里包含if判断的东西,if 里面的判断[] 里面的条件必须要有空格
例如:
if [ -e "/dev/sdb" ];
then
...
fi
[ 后面有个空格, ] 前面也有一个空格。
linux shell case语句 :
case语句适用于需要进行多重分支的应用情况。
case分支语句的格式如下:
case $变量名 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
*)
默认执行的命令序列 ;;
esac
case语句结构特点如下:
case行尾必须为单词“in”,每一个模式必须以右括号“)”结束。
双分号“;;”表示命令序列结束。
匹配模式中可是使用方括号表示一个连续的范围,如[0-9];使用竖杠符号“|”表示或。
最后的“*)”表示默认模式,当使用前面的各种模式均无法匹配该变量时,将执行“*)”后
的命令序列。
例如:
1 case "$1" in //判断$1
2 *.sh) //如果是.sh文件,那么执行这一个
3 # Source shell script for speed.
4 (
5 trap - INT QUIT TSTP
6 scriptname=$1
7 shift
8 . $scriptname
9 )
10 ;;
11 *) //如果不是.sh那么执行这个默认的
12 "$@"
13 ;;
14 esac
linux shell 参数:
$1 表示第一个参数。
$2 表示第二个参数。
$3 表示第三个参数。
$@ 表示所有的参数,这个是数组的方式表示所有的参数。
$# 表示参数的个数。
$* 也可以表示所有的参数。
linux shell if 判断语句:
linux shell while 循环:
1. 清空文件中的内容
cat /dev/null >> /var/log/messages
2. 脚本中判断用户是不是root用户
ROOT_UID = 0 # $UID 为0时,用户才具有root用户权限
if [ "$UID" -ne "$ROOT_UID"]
then
echo "this user is not root"
exit 1
fi
3. 多条语句条件运行
语句1 && 语句2 # 语句1正确,再运行语句2
语句1 || 语句2 # 语句1失败,再执行语句2
语句1 || {
语句2
语句3 # 多个语句在一个块中时, 用{}括起来
}
4. 输出多行提示信息
cat << END
1. 第一种方法... //显示
2. 第二种方法... //显示
3. 第三种方法... //显示
END
5. 判断远程网站的端口是否是打开状态
(1) echo -e "\n" | telnet baidu.com 80 | grep Connectioned
(2) nc -w 5 baidu.com 80 && echo ok || echo no
6. echo 显示内容时添加字体颜色
定义变量:
BLOCK_COLOR = '\033[30m'
RED_COLOR = '\033[31m'
GREEN_COLOR = '\033[32m'
YELLOW_COLOR = '\033[33m'
BLUE_COLOR = '\033[34m' // 蓝色
PURPLE_COLOR = '\033[35m' // 紫色
SKY_BLUE_COLOR = '\033[36m' // 天蓝色
WHITE_COLOR = '\033[37m' // 白色
结束位:
RES = '\033[0m' // 关闭所有属性
'\33[1m' // 设置高亮度
'\33[4m' // 下划线
'\33[5m' // 闪烁
'\33[7m' // 反显
'\33[8m' // 消隐
'\33[30m -- \33[37m' // 设置前景色
'\33[40m -- \33[47m' // 设置背景色
'\33[mA' // 光标上移m行
'\33[mB' // 光标下移m行
'\33[mC' // 光标右移m行
'\33[mD' // 光标左移m行
'\33[y;xH' // 设置光标位置
'\33[2J' // 清屏
'\33[K' // 清除从光标到行尾的内容
'\33[s' // 保存光标位置
'\33[u' // 恢复光标位置
'\33[?25l' // 隐藏光标
'\33[?25h' // 显示光标