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 1s 睡眠
1秒
sleep 1m 睡眠
1分
sleep 1h 睡眠
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