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
字符串判断
# true length>0
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为非空时为真
数字判断
# true 10 equal 10
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 1s 睡眠1秒
sleep 1m 睡眠1分
sleep 1h 睡眠1小时
既定标识符
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
字符串操作
# 获得字符串的长度
${#task_file}
# 从第2个字符开始,截取8个
${task_file:1:8}
字符串切割
info='abcd;efgh'
fstr=`echo $info | cut -d \; -f 1`
sstr=`echo $info | cut -d \; -f 2`
数字运算
s=0 #定义一个求和变量,初值为0。
t=`expr$1**$2` #用expr改变运算顺序,求x的y次方。
t=$[t*3] #t乘以3。
s=$[s+t] #结果相加。
t=$[$1**2] #求x的平方。
t=$[t*4] #结果乘以4。
s=$[s+t] #结果相加。
t=`expr$2*5` #求5y的值。
s=$[s+t] #结果相加。
s=$[s+6] #结果加上6。
echo$s #输出结果。
echo$((a%b)) #取余
数组遍历
#echo ${array[0]}
#echo ${array[index]}
for data in ${array[@]}
do
echo ${data}
done