一.文件测试:
-e file 测试文件是否存在
-f file 测试文件是否为普通文件
-d file 测试指定路径是否为目录
-r file 测试当前用户对指定文件是否有读取权限
-w file
-x file
[ -e /etc/passwd ]文件是否存在
多分支if语句
if 条件1;then
执行语句
elif 条件2;then
执行语句
elif 条件3;then
fi
测试脚本是否有语法错误(未必可靠)
bash -n 1.sh
bash -x 1.sh 单步执行(显示每步执行)
定义脚本退出状态码
exit: 退出脚本
exit #(0-255)0正确1-255错误
如果脚本没有明确定义退出状态码,那么
最后执行的一条命令的退出码即为脚本的退出状态码
测试的方法
[ expression ]
[[expression]]
text expression
bash中常用的条件测试有三种
整数测试
-gt大于
-le小于等于
-ne不等于
-eq等于
-ge大于等于
-lt小于
例:
int1=63
int2=77
[ $int1 -eq $int2 ]
int1是否等于int2
例:
给定一个文件
如果是是普通文件 显示
如果是目录 显示
否则,无法识别
#!/bin.bash
#
file=/etc/passwd
if [ ! -e $file ];then
echo "no such file "
exit 5
fi
if [ -f $file ];then
echo "Diretory"
else
echo "undown"
fi
bash变量的类型
本地变量:(局部变量)作用域为当前shell进程
环境变量:(全局变量)作用域为当前shell进程和子进程
位置变量:$1 脚本第一个参数$2第二个参数
shift (轮换)剔除变量
特殊变量:
位置变量例:
1.sh /etc/passwd /dev/
$1为/etc/passwd
$2为/dev/
echo $1
shift
echo $1
shift
1.sh 1 2
1
2
shift 将执行过的第一个变量剔除转换为第二个变量以此类推
特殊变量例:
$? 上一条命令的执行状态码
$# 变量的个数
例:
1.sh /etc/passwd /dev/
2
no such file
$*参数列表
$@参数列表
1.sh /etc/passwd /dev/
/etc/passwd
/dev/
例:给脚本俩个参数(整数)
显示此俩者之和,之积;
#!/bin/bash
#
declare -i a=$1+$2
declare -i b=$1*$2
echo "$a"
echo "$b"
或者
#!/bin/bash
echo "$[$1+$2]"
echo "$[$1*$2]"
-e file 测试文件是否存在
-f file 测试文件是否为普通文件
-d file 测试指定路径是否为目录
-r file 测试当前用户对指定文件是否有读取权限
-w file
-x file
[ -e /etc/passwd ]文件是否存在
多分支if语句
if 条件1;then
执行语句
elif 条件2;then
执行语句
elif 条件3;then
fi
测试脚本是否有语法错误(未必可靠)
bash -n 1.sh
bash -x 1.sh 单步执行(显示每步执行)
定义脚本退出状态码
exit: 退出脚本
exit #(0-255)0正确1-255错误
如果脚本没有明确定义退出状态码,那么
最后执行的一条命令的退出码即为脚本的退出状态码
测试的方法
[ expression ]
[[expression]]
text expression
bash中常用的条件测试有三种
整数测试
-gt大于
-le小于等于
-ne不等于
-eq等于
-ge大于等于
-lt小于
例:
int1=63
int2=77
[ $int1 -eq $int2 ]
int1是否等于int2
例:
给定一个文件
如果是是普通文件 显示
如果是目录 显示
否则,无法识别
#!/bin.bash
#
file=/etc/passwd
if [ ! -e $file ];then
echo "no such file "
exit 5
fi
if [ -f $file ];then
echo "Diretory"
else
echo "undown"
fi
bash变量的类型
本地变量:(局部变量)作用域为当前shell进程
环境变量:(全局变量)作用域为当前shell进程和子进程
位置变量:$1 脚本第一个参数$2第二个参数
shift (轮换)剔除变量
特殊变量:
位置变量例:
1.sh /etc/passwd /dev/
$1为/etc/passwd
$2为/dev/
echo $1
shift
echo $1
shift
1.sh 1 2
1
2
shift 将执行过的第一个变量剔除转换为第二个变量以此类推
特殊变量例:
$? 上一条命令的执行状态码
$# 变量的个数
例:
1.sh /etc/passwd /dev/
2
no such file
$*参数列表
$@参数列表
1.sh /etc/passwd /dev/
/etc/passwd
/dev/
例:给脚本俩个参数(整数)
显示此俩者之和,之积;
#!/bin/bash
#
declare -i a=$1+$2
declare -i b=$1*$2
echo "$a"
echo "$b"
或者
#!/bin/bash
echo "$[$1+$2]"
echo "$[$1*$2]"