if语句
SYSTEM=`uname -s `
if [ $SYSTEM == "Linux" ] ; then
echo "Linux"
elif [ $SYSTEM == "Darwin" ] ; then
echo "Darwin"
else
echo "What?"
fi
for语句
for ((i=1 ; i<=10 ; i++))
do
echo ${i}
done
for i in `seq 1 100 `
do
echo $i
done
i=1
while (($i < 100 ))
do
echo $i
i=`expr $i + 1 `
done
for i in {1 ..100 }
do
echo $i
done
range="1 2 3"
for i in ${range}
do
echo ${i}
done
range_hour="1 2 3 4 5"
for hour in ${range_hour}
do
range_min="02 12 22"
for min in ${range_min}
do
echo ${hour} ${min}
done
done
for i in `ls ../`
do
echo ${i}
ls ../${i}
done
字符串判断
if [ -n "haha" ] ; then
echo "true"
else
echo "false"
fi
str1 = str2 当两个串有相同内容、长度时为真
str1 == str2 当两个串有相同内容、长度时为真
str1 != str2 当串str1和str2不等时为真
-n str1 当串的长度大于0 时为真(串非空)
-z str1 当串的长度为0 时为真(空串)
str1 当串str1为非空时为真
数字判断
if [ 10 -eq 10 ] ; then
echo "true"
else
echo "false"
fi
int1 -eq int2 两数相等为真
int1 -ne int2 两数不等为真
int1 -gt int2 int1 大于int2 为真
int1 -ge int2 int1 大于等于int2 为真
int1 -lt int2 int1 小于int2 为真
int1 -le int2 int1 小于等于int2 为真
文件判断
file=`ls .`
if [ -s ${file} ] ; then
echo "true"
else
echo "false"
fi
-r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件大小非0 时为真
-t file 当文件描述符(默认为1 )指定的设备为终端时为真
多个判断逻辑合并
file=`ls .`
if [ -s ${file} -a -x ${file} ] ; then
echo "true"
else
echo "false"
fi
-a 与
-o 或
! 非
传参
echo "first parameter si $1 " ;
echo "parameter number is $# " ;
echo "all parameter $*" ;
echo "-- \$* ---"
for i in "$*" ; do
echo $i
done
echo "-- \$@ ---"
for i in "$@ " ; do
echo $i
done
休眠
sleep 1 睡眠1 秒
sleep 1 s 睡眠1 秒
sleep 1 m 睡眠1 分
sleep 1 h 睡眠1 小时
既定标识符
$? 显示最后命令的退出状态。0 表示没有错误,其他任何值表明有错误。
字符串操作
${
${ task_file: 1 : 8 }
字符串切割
info='abcd;efgh'
fstr=`echo $info | cut -d \; -f 1 `
sstr=`echo $info | cut -d \; -f 2 `
数字运算
s=0
t=`expr$1 **$2 `
t=$[ t*3 ]
s=$[ s+t]
t=$[ $1 **2 ]
t=$[ t*4 ]
s=$[ s+t]
t=`expr$2 *5 `
s=$[ s+t]
s=$[ s+6 ]
echo$s
echo$( (a%b))
数组遍历
for data in ${array[@]}
do
echo ${data}
done