shell循环

字符串长度

lenth=${#string}
echo "lenth is " $lenth    #显示输入的字符串长度

字符串分割

nstr=${string:2:3}
echo $nstr                 #比如字符串apple,输出ppl

只读readonly

num=110
echo $num
num=11                     #这里会出错,制度变量不可更改
echo $num

清除变量的值

num=11
echo $num
unset num
echo $num                 #清空变量的值,直接引用也为空

键盘获得变量值

read num num1 num2        #不建议多数值输入,输入时数值间忘记空格会出错
echo $num $num1 $num2     #最后一个变量输出后面所有剩余数值,包括空格

加减乘除运算

add=`expr $num1 + $num2`
echo "$add = $num1 + $num2"
mul=$(expr 4 \* 2)        # 其中``和$()都是取得结果集
echo "$mul = 4 \* 2"
let dec=num1-num2
echo $dec
let div=num1-num2
echo $div

text 测试语句

文件比较运算符:
-e file 测试file是否存在
-d file 测试file是否目录
-f  file 测试file是否是文件
-r 测试file是否可读
-w 测试file是否可写
-x 测试file是否可执行
算数比较运算符:
-eq等于
-ne不等于
-gt大于
-ge大于等于
-lt小于
-le小于等于
字符串比较运算符:
-z string字符串长度是否为零
-n string字符串非零则真
str=str1相同
str!=str1不同

逻辑运算符

-a与
-o或
-!非

if语句

if [ $num -a 8 ]        #条件表达式两侧需要一个空格,if后也需要空格
then
echo "num等于8"
fi
if [ $num -lt 8 ]
then
echo "$num小于8"
elif [ $num1 -a 8 ]
then
echo "$num1等于8"
fi

常见变量

$?命令执行后的返回状态,返回零表示执行成功
$*所有参数表
$@所有参数表
$#传递到脚本的参数个数
$0可执行命令本身,不是位置参数
$1~$n分别表示第一个到第n个位置参数
echo -n不换行输出

text 语句语法

text $name -eq $1
echo $?
if text -f $fiename
then
 ……
fi
if [ -f $filename ]
then
……
fi

case语句

case $str in
    W|w)
            echo "word!"
            ;;
    *)                                          # *表示任意多字符
            echo "其他字符";;                  # ;;可以在语句后
    [a-z])
            echo "字母"
            ;;
esac

for语句

for i in 1 2 3 4 5
do
        echo -n $i
done
echo

for((i=0;i<10;i++)) # for 嵌套

while语句

while [ num -le 110 ]
do
        let sum+=num
        let num++
done
echo $sum

你可能感兴趣的:(shell循环)