shell编程

目录

1.shell中的变量分类

2.shell的数据类型

3.bcj计算器

4.整数数值的运算

5.字符串的截取

6.数组

7.for循环

8.while循环

9.if-else语句

10.条件测试[ ]

常用判断:

字符串判断:

数值判断:

逻辑判断:


1.shell中的变量分类

局部变量:脚本中所使用到的变量

环境变量:环境配置过程中所使用到的变量

shell变量:变量名是由字母数字下划线组成,由字母或下划线开头,shell变量在使用时需要在变量前添加一个$符号

预定义变量:

$0:当前脚本的名称

$1-$9:9个位置变量

$?:上一条命令的返回值

$*:所有的位置变量,每一个位置变量都是一个字符串

$#:位置变量的个数

$@:所有动位置变量,所有的位置变量组成一个字符串

$$:当前进程的进程号

$!:后台运行的最后一个进程的进程号

2.shell的数据类型

shell的默认数据类型是字符串。默认数字、运算符、变量都做字符串处理。在shel中单引号不会解析变量,双引号会解析变量。

3.bcj计算器

bc是任意精度的计算器语言,在linux当作计算器使用,但是bc只能做基本的数学运算(+ - * / ^ % sqrt)

bc的常用参数:

i:强制进入交互模式

l:定义使用的标准数学库

v:显示版本信息

4.整数数值的运算

第一种表达式:$(( 表达式 ))

第二种表达式:$[ 表达式 ]

第三种表达式:expr 表达式

5.字符串的截取

echo "截取前4个字符:"
echo ${line:0:4}

echo "截取后9个字符:"
echo ${line:0-9}

echo "从倒数第九个字符开始截取4个字符"
echo ${line:0-9:4}

echo "从左向右截取最后一个:后的字符"
echo ${line##*:}

echo "从左向右截取第一个:后的字符"
echo ${line#*:}

echo "从右向左截取最后一个:后的字符"
echo ${line%%:*}

echo "从右向左截取第一个:后的字符"
echo ${line%:*}

echo "字符串长度"
echo ${#line}

6.数组

定义;使用圆括号,中间以空格作为分隔符

7.for循环

语法一:
for 变量 in 值1 值2
do
循环执行语句
done

语法二:
#for (( i=0;i<3;i++))
for (( 初始化变量;结束循环条件;运算))
do
循环执行语句
done

第一种语法格式:

第二种语法格式:

8.while循环

while read line
do
循环执行语句
done


while 条件
do
循环执行语句
done

支持break和continue

第一种语法格式:

第二种语法格式:

9.if-else语句

if 条件
then
执行语句
fi


if 条件
then
执行语句
else
执行语句
fi

if 条件
then
执行语句
elif 条件
执行语句
fi

10.条件测试[ ]

[ ]:表示条件测试。注意这里的空格很重要。要注意在‘['后面和']'前面都必须要加上空格。

常用判断:

[ -d filename ]:如果filename(最好是绝对路径)存在且是一个directory(目录)则返回真,否则返回假。

[ -f filename ]:如果filename存在且是一个文件,则返回真,否则返回假。

字符串判断:

[ -z string ]:如果string长度为0返回真,否则返回假。

[ -n string ]:如果string长度非0返回真,否则返回假。

[ string ]:如果字符串非空返回真。

[ string1 == string2 ]:如果两个字符串相同则返回真。

[ string1 != string2 ]:如果两个字符串不相同返回真。

[ string1 > string2 ]:如果string1字典排序在string2后面返回真。

数值判断:

[ int1 -eq int2 ]:如果int1等于int2,返回真。

[ int1 -ne int2 ]:如果int1不等于int2,返回真。

[ int1 -gt int2 ]:如果int1大于int2,返回真。

[ int1 -ge int2 ]:如果int1大于等于int2,返回真。

[ int1 -lt int2 ]:如果int1小于int2,返回真。

[ int1 -le int2 ]:如果int1小于等于int2,返回真。

逻辑判断:

[ ! expr ]:逻辑非,如果expr是false则表达式返回值为真。

[ expr1 -a expr2 ]:逻辑与,如果expr1和expr2都为真,则表达式返回值为真。

[ expr1 -o expr2 ]:逻辑或,如果expr1或expr2有一个为真,表达式的返回值为真。

(( ))、[ ]、[[ ]] 的区别:

(( )):整数数值的判断。

[ ]:字符串判断的过程中如果由空白字符会进行分词。

[[ ]]:不会进行分词 建议使用[[ ]] 进行字符串的判断。

  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值