常用shell语法

xiaoxiao2021-02-28  110

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 睡眠1sleep 1s 睡眠1sleep 1m 睡眠1sleep 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
转载请注明原文地址: https://www.6miu.com/read-33521.html

最新回复(0)