shell编程

本文介绍了Shell脚本中的基本概念,包括变量的声明与使用、输入输出操作、注释方式、字符串拼接以及算数和逻辑运算。此外,还详细讲解了条件判断(如-eq,-ne等)、循环结构(如if,case,for,while)以及函数的定义和调用。同时,提到了数组的使用和一些控制流程的命令,如break和continue。
摘要由CSDN通过智能技术生成

1、语法

1.1 shell变量

shell变量只有一种数据类型:字符串类型,变量名命名方式与C语言相同。

VAR=10 //变量定义,等号两侧不能有空格

VAR=100 //变量重新赋值。第一次=为变量定义,其后的=为变量赋值

VAR+=10 //追加

VAR=$VAR.asd //字符串拼接

变量的使用:$VAR或${VAR}

清空变量:unset VAR

1.1.1输入输出

输出:echo “字符串”

输入:read ${VER}

VAR=10
echo "VAR=$VAR"
VAR=100 
echo "VAR=$VAR" 
VAR+=10 
echo "VAR=$VAR"
VAR=$VAR.asd
echo "VAR=$VAR"

echo "输入:"
read $VAR

echo "$VAR"

1.1.2注释

(1)单行注释

注释整行:在行首加#

行尾加注释:先输入空格后加#

(2)多行注释

:<<!

注释

#注释

echo "注释"  #注释

:<<!
注释
内容
!

1.2单引号与双引号

单引号:存放字符串,不可展开变量

双引号:存放字符串,可以展开变量

 VAR=10
 
 echo '$VAR'
 echo "$VAR" 

1.3通配符、命令替换、算数运算、转义字符

(1)通配符

* :匹配任意字符

?: 匹配一个字符

[ ]: 匹配括号中出现的任意一个字符 [a-z][0-9][123]

(2)命令替换

$( )或$` `取命令执行的结果作为变量值

VAR=$(ls)

VAR=$`ls`

VAR=$(ls)
echo $VAR
VAR=$`ls`
echo $VAR

(3)算数运算

$((算式))或$[算式]。只能进行整数运算

VAR=10
echo "$(($VAR+10))"
echo "$[$VAR/10]"

(4)转义字符

'\'在Shell中被用作转义字符,用于去除紧跟其后的单个字符的特殊意义

VAR=10
echo $VAR
echo \$VAR

1.4条件判断表达式

test或[ ]

注意:1)表达式为真结果为0,为假结果为1。

2)表达式的值不允许赋值给其他变量,该判断表达式每一部分都已空格隔开

大小判断:(大小判断只能用于整数之间)

-eq:等于(equal)

-ne:不等于(not equal)

-lt:小于 (less than)

-le:小于等于(less equal)

-gt:大于(greater than)

-ge:大于等于(greater equal)

文件类型判断:

[ -d DIR ]:如果DIR存在并且是一个目录则为真

[ -f FILE ]:如果FILE存在并且是一个普通文件则为真

[ -e FILE ]:判断文件是否存在,如果存在则为真

字符串长度判断:

[ -z ${STR} ]:如果STR的长度为0则为真(z就是zero)

[ -n ${STR} ]:如果STR的长度非0则为真(n就是not zero)

字符串判断是否相等:

[ str1 = str2 ]:如果俩个字符串相同则为真(比较运算符两边要加空格)

[ str1 != str2 ]:如果字符串不相同则为真(比较运算符两边要加空格)

test 10 -gt 5
echo $?
[ 10 -gt 5 ]  #每部分用空格隔开
echo $?

1.5特殊变量

$0 相当于C语言main函数的argc[0]

$1、$2……这些称为位置参数;相当于C语言main函数的argc[1]、argc[2]...

$# 相当于C语言main函数的argv - 1,注意这里的#后面不表示注释

$@ 表示参数列表"$1"、"$2"……

$* 表示参数列表"$1"、"$2"……

$? 上一条命令的Exit Status

$$ 当前进程号

echo "$0 $1 $2 $#"
echo $@
echo "$# $#"
[ 10 -nt 10 ]
echo $?
echo $$

1.6逻辑运算

-a 逻辑与 [ EXPR1 -a EXPR2 ]

-o 逻辑或 [ EXPR1 -o EXPR2 ]

! 逻辑非 [ ! EXPR1 ]

2、语句

2.1 if语句

if [ 判断条件 ];then

执行语句

fi

if [ 10 -eq 10 ];then
    echo "true"
fi

if [ 判断条件 ]

then

执行语句

fi

if [ 10 -eq 10 ]
then
    echo "true"
fi

if [ 判断条件 ];then

执行语句

elif [ 判断条件 ];then

执行内容

else

执行内容

fi

VAR=10
read VAR
if [ $VAR -eq 10 ];then
    echo "VAR=10"
elif [ $VAR -lt 10 ];then
    echo "VAR<10"
else
    echo "VAR>10"
fi

2.2 case语句

case $变量 in

case1)

命令1;;

case2)

命令2;;

*)

命令3;;

esac

read num
case $num in
1)
    echo "num=1";;
2)
    echo "num=2";;
*)
    echo "其他情况";;
esac

2.3 for语句

for((i=0;i<5;i++))

do

执行内容

done

for((i=0;i<5;i++))
do
    echo "$i"
done

for i in 变化范围

do

执行内容

done

for i in 1 2 3    #for i in 1 2 3;do
do                #    echo "$i"
    echo "$i"     #done
done

2.4 while循环

while [ 循环条件 ]

do

执行内容

done

I=0
while [ $I -lt 10 ];do
    echo $I
    I=$[I+1]
done

2.5 结束语句

break :可以跳出循环;

continue:跳过本次循环,但不会跳出循环。

return:结束本函数并返回一个0-255之间的整数值。

exit:结束本程序

3、数组

1)数组定义

定义1: a=(1 2 3 4 5) //下标从 0 开始各个数据之间用空格隔开

定义2: a[0]=1;a[1]=2;a[2]=3 //数组长度是可变的

shell中的数组长度是可变的

2)数组引用:${a[下标]} //单个元素引用

${a[@]} //整体引用

${#a[@]} 或 ${#a[*]} //数组长度

4、函数

函数定义中,没有返回值也没有参数列表。函数调用只需要函数名

函数名( )

{

函数体

}

foo()
{ 
    echo "Function foo is called" 
}
echo "========"
foo         
echo "========"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值