shellwhile结束循环_shell编程基础
Shell脚本,是⼀种为shell编写的脚本程序。
Shell编程跟JavaScript、Python编程⼀样,只要有⼀个能编写代码的⽂本编辑器和⼀个能解释执⾏的脚本解释器就可以了。Linux的Shell种类有很多,我们主要⽤的是Bourne Shell(/usr.bin/sh或/bin/sh)
1.创建shell⽂件
原则上shell程序可以写在任何⽂件中,但是⼀般会在shell⽂件后加后缀.sh表⽰当前⽂件是⼀个shell⽂件
shell需要可执⾏权限,所以创建好的shell⽂件需要添加x权限
2.基础语法
1)注释
# 单⾏注释
:<<EOF
多⾏注释1
多⾏注释2
多⾏注释3
EOF
2)输出和输⼊
echo指令就相当于python中的print函数(默认会换⾏)
echo  输出内容
echo -n 输出内容    # 输出的时候不换⾏
printf指令(输出不能换⾏)
printf 输出内容
输⼊指令: read 变量名 -- 输⼊内容,并且将输⼊的结果保存在变量中
3)变量
a. 声明变量的语法: 变量名=值
说明: a. 变量名和=, =和值之间不能有空格
b. 变量名的要求和python变量名要求⼀样
name='⼩明'
age=18
stu_name=⼩红
b. 使⽤变量:
$变量
${变量}
age=18
echo $age
age2=${age}
c. 只读变量
使⽤ readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
gender='男'
readonly gender
gender='⼥'    # test.sh: line 17: gender: readonly variable
d. 删除变量
使⽤ unset 命令可以删除变量
name='yuting'
unset name
4)获取linux指令结果
在shell脚本中可以直接写linux指令,在执⾏shell脚本的时候这些指令可以直接获取
ls    # ls指令
ls  -lh      # ls指令,并且设置参数
    # 创建a.txt⽂件
# 获取指令结果: 变量=$(指令)  /  变量=`指令`
lsresult=$(ls)    #将ls指令的结果保存到变量lsresult中
currnet_path=`pwd`
3.shell字符串
shell中的字符串可以⽤单引号也可以使⽤双引号甚⾄可以不⽤引号。但是单引号中不能出现单引号字符,加也不⾏
str1='abc'
str2="abc"
str3=abc
str4='abcn123'    #⽀持转义字符,但是不⽀持编码字符
str5="abcn123"
age=18
str6="年龄是$age"    #双引号⾥⾯可以出现变量,单引号不⾏
1)字符串拼接
str1="hello"
#单引号拼接
str2=''${str1}',world!'
str3=''$str1',world!'
#双引号拼接
str4="${str1},world!"
str5=""$str1",world!"
2)获取字符串长度
str1="abcd"
echo ${#str1}    # 输出4
3)字符串提取
# 字符串:下标:个数  --从字符串中指定下标开始获取指定个数字符,返回⼀个新的字符串
# 字符串:下标:1  -- 获取字符串中指定下标对应的字符
# 字符串:下标    -- 从指定下标开始获取到字符串最后
string='hello world'
echo ${string:1:4}    # ello
4.shell数组
在 Shell 中,⽤括号来表⽰数组,数组元素⽤"空格"符号分割开。定义数组的⼀般形式为:
# 数组名=(元素1 元素2 元素3 ...)
names=(⼩明⼩红⼤黄 Tom)
names2=(
'⼩明'
'⼩红'
'⼤黄'
'Tom'
)
names3[0]=⼩明
names3[1]=⼩红
names3[2]=⼤黄
names3[3]=Tom
1)获取数组元素:${数组[下标]}
echo ${names[1]}    # ⼩红
2)获取数组的长度
nums=(100 200 300 400)
# 获取数组长度
length=${#nums[@]}
length=${#nums[*]}
# 获取数组指定下标对应的元素的长度
length2=${#num[n]}
5.运算符
shell中⽀持的运算符有: 算术运算符、关系运算符、布尔运算符、字符串运算符
1)算术运算符:+,-,*,/,%
# 如果想要在shell完成数值运算,运算的语法:  `expr 运算表达式`; 并且运算符两边必须加空格re1=10+20
echo ${re1}    # 10+20
# 1.加法运算
re2=`expr 10 + 20`
echo ${re2}    # 30
# 2.减法运算
re3=`expr 10 - 20`
echo ${re3}    # -10
# 3.乘法运算
re4=`expr 10 * 20`  # 注意:使⽤*作为乘法运算符的时候需要前⾯加
echo ${re4}    # 200
# 4.除法运算
# ⼩数除法运算: `echo "scale=⼩数点位数;数值1 / 数值2"|bc`
# 整数除法运算: `expr 数值1 / 数值2`
re5=`echo "scale=2;7 / 3"|bc`
echo $re5
re6=`expr 5 / 2`
echo $re6
# 5.求余数
re7=`expr 10 % 3`
re8=`echo "10.2 + 5.1"|bc`
echo $re8
2)关系运算符(⽐较运算符),⽐较的是数字⼤⼩
# -eq  ---  等于,相当于 ==
# -ne  ---  不等于,相当于!=
# -gt  ---  ⼤于
# -lt  ---  ⼩于
# -ge  ---  ⼤于等于
# -le  ---  ⼩于等于
# 使⽤语法: [ 值1 关系运算符值2 ]
a=100
b=10
# 关系运算符要配合if语句或者循环语句使⽤
if [ $a -gt $b ]
then
echo a⼤于b
else
echo a不⼤于b
fi
3)布尔运算符(逻辑运算符)
# !    --  逻辑⾮运算
# -o  --  逻辑或运算
# -a  --  逻辑与运算
age=18
score=95
# 参加⽐赛的条件:分数⼤于90分并且年龄⼤于等于18岁if [ $age -ge 18 -a $score -gt 90 ]
then
echo 可以参见⽐赛
else
echo 不能参加⽐赛
fi
4)字符串运算符
# [ 字符串1 = 字符串2 ]    -- 判断两个字符串是否相等
# [ 字符串1 != 字符串2 ]  -- 不相等
# [ -z 字符串]  -- 判断字符串长度是否为0
# [ -n "字符串" ]    -- 判断字符串长度是否不为0
# [ $ 字符串 ]  -- 判断字符串是否是空串
a="abc"
b="123"
if [ $a = $b ]
then
echo a和b相等
else
echo a和b不相等
fi
a=""
if [ -n "${a}" ]
then
echo a的长度不为0
else
echo a的长度为0
fi
6. if语句python获取数组长度

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。