您的位置:首页 > 运维架构 > Shell

bash脚本编程之四——整数测试及特殊变量

2017-09-22 15:35 344 查看
bash中常用的条件测试有三种:

测试方法:
[ expression ] 命令测试法
[[ expression ]] 关键字测试法
test expression
整数测试:
-gt

-le

-ne

-eq
-ge

-lt
例:
INT1=63

INT2=77
[ $INT1 -eq $INT2 ]
[[ $INT1 -eq $NET2 ]]

test $INT1 -eq $NET2

文件测试:
-e FILE:測試文件是否存在
-f FILE:测试文件是否为普通文件
-d FILE:测试指定路径是否为目录
-r FILE:测试当前用户对指定文件是否有读取的权限
-w FILE:测试当前用户对指定文件是否有写入的权限
-x FILE:测试当前用户对指定文件是否有执行的权限

例:写一个脚本,给定一个文件,如果是普通文件,就显示之;如果是一个目录,亦显示之;否则,显示此为无法识别文件。
#!/bin/bash
#
file=/etc/passwd \\定义变量file

if [ ! -e $file ];then \\如果文件不存在
echo "no such file." \\就显示文件不存在
exit 2 \\结束脚本
fi

if [ -f $file ];then \\如果文件存在就判断是不是普通文件
echo "common file." \\是就显示文件为普通文件
elif [ -d $file ];then \\否则就测试是否为目录
echo "Directory." \\是就显示是目录
else \\否则
echo "unknow" \\就显示文法识别
fi

定义脚本退出状态码
提前结束脚本:exit exit #如果脚本没有明确定义退出状态码,那么,最后执行的一条命令的退出码既为脚本的退出状态码:
测试脚本是否有语法错误:bash -n +脚本名逐条显示执行:bash -x +脚本名

bash变量的类型:
本地变量(局部变量)

环境变量

位置变量:$1,$2,.... 引用位置参数 shift:轮替
./filetest,sh /etc/fatab /etc/inittab
$1:/etc/fatab
$2:/etc/inittab
例:能接受一个参数(文件路径),判定:此参数如果是一个存在的文件,就显示“OK”,否则就显示“NO such file.”
#!/bin/bash

#
if [ -e $1 ]; then
echo "OK."

else
echo "NO such file."

fi

例:写一个脚本,给脚本传递两个参数,显示两个参数的和,成积。
#!/bin/bash
if [ $# -lt 2 ];then
echo "Usage:file3.sh ARG1 ARG2"

fi
echo "the sum is $[$1+$2]."
echo "the product is $[$1*$2]"

特殊变量

$?:上一条命令的退出状态码

$#:参数的个数

$*:参数列表

$@:参数列表
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  bash 脚本编程