Linux--shell脚本详解
创始人
2024-01-31 18:03:48

目录

一、shell脚本的类型

二、read命令

三、数组

3.1 定义数组

3.2 赋值数组元素

3.3 取得元素个数

3.4 取得单个元素长度

3.5 取消或删除数组中的元素

四、赋值时使用引号的作用

五、位置参数

5.1 $* 和 $@的区别

六、预定义变量

七、变量的算术运算

 7.1  双小括号 (())  数值运算命令的用法

 7.2 let 运算命令的用法

 7.3 expr 命令的用法

7.3.1 expr配合变量计算

 7.3.2 利用 expr 计算字符串的长度

八、条件测试

8.1 条件测试语句

8.2 文件测试操作符

8.3 字符串测试操作符

8.4 测试表达式 test 、[] 、[[]] 、 (()) 的区别

 九、if 条件判断语句

9.1 单条件语句

9.2 多条件语句

十、case条件判断语句

十一、for循环语句

11.1 例子:计算指定数值之内的和

11.2 例子:区别$*和$@

 十二、while循环语句

 十三、shell函数

13.1 语法格式


一、shell脚本的类型

常见的shell分为两大主流:

sh 和 csh

查看系统默认的shell:echo $SHELL

查看系统支持的shell: cat  /etc/shells

二、read命令

read -p(提示语句) -n(字符个数) -t(等待时间,单位为秒) -s(隐藏输入)  

例子:

read -t 30 -p “please input your name: “ NAME

echo $NAME

三、数组

bash只支持一维数组,不支持多维数组

3.1 定义数组

array_name = (li wang xiang zhang)         # (小括号做边界、使用空格分离)

3.2 赋值数组元素

array_name[0]=“zhao”

3.3 取得元素个数

${#array_name[@]} 或者 ${#array_name[*]}

3.4 取得单个元素长度

${#array_name[1]}

3.5 取消或删除数组中的元素

unset array_name[4]

四、赋值时使用引号的作用

  • •双引号:允许通过$符号引用其他变量值
  • •单引号:禁止引用其他变量值,$视为普通字符
  • •反撇号:命令替换,提取命令执行后的输出结果 全局变量的定义方法 export 变量名

五、位置参数

位置参数是一种在调用 Shell 程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。位置参数之间用空格分隔,Shell取第一个位置参数替换程序文件中的 $1,第二个替换 $2 , 依次类推。

$0 是一个特殊变量,它的内容是当前这个shell程序的文件名,所以 $0 不是一个位置参数。

$n:  n为数字,$0代表命令本身,$1-$9代表第一到第9个参数,十以上的参数需要用大括号包含,如${10}

$*:  代表命令行中所有的参数,把所有的参数看成一个整体。以"$1 $2 … $n"的形式输出所有参数

$@: 代表命令行中的所有参数,把每个参数区分对待。以"$1" "$2" … "$n" 的形式输出所有参数

$#: 代表命令行中所有参数的个数。添加到shell的参数个数

5.1 $* 和 $@的区别

  • 1,$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号" "包含时,都以"$1" "$2" … "$n" 的形式输出所有参数;
  • 2,当它们被双引号" "包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;
  • 3,"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
  • 六、预定义变量

  • 预定义变量和环境变量相类似,也是在Shell一开始就定义的变量,不同的是,用户只能根据shell的定义来使用这些变量,所有预定义变量都是由符号“$”和另一个符号组成。 常见的Shell预定义变量有以下几种.
  • $? : 命令执行后返回的状态,0 表示没有错误,非0表示有错误。
  • $$ : 当前进程的进程号
  • $! : 后台运行的最后一个进程号
  • $0 : 当前执行的进程名

七、变量的算术运算

Shell中常见的算术运算符

Shell 中常见的算术运算命令

 7.1  双小括号 (())  数值运算命令的用法

 7.2 let 运算命令的用法

 let 赋值表达式  

 7.3 expr 命令的用法

expr 表达式     # 运算符号和数字之间要有空格

7.3.1 expr配合变量计算

expr在Shell中可配合变量进行计算,但需要用反引号将计算表达式括起来。

 7.3.2 利用 expr 计算字符串的长度

八、条件测试

8.1 条件测试语句

8.2 文件测试操作符

 注:(())不能用于文件测试,文件测试一般常用的是 [ ]

8.3 字符串测试操作符

 注: == 和 !=  两端要有空格  ,(())不能用于字符测试

8.4 测试表达式 test 、[] 、[[]] 、 (()) 的区别

 九、if 条件判断语句

9.1 单条件语句

if 条件判断
then命令
fi

例子:

 

9.2 多条件语句

if 条件判断
then命令
elif 条件判断
then命令
fi

例子:

十、case条件判断语句

case 变量 inone)命令
;;two)命令
;;*)命令
esac

 例子:

效果展示:

十一、for循环语句

for 条件
do   命令
done

11.1 例子:计算指定数值之内的和

效果展示:

11.2 例子:区别$*和$@

效果展示:

 十二、while循环语句

while 条件
do命令
done

例子:

效果展示:

 十三、shell函数

13.1 语法格式

function name(){statements[return values]}

对各个部分的说明:

  • •function是 Shell 中的关键字,专门用来定义函数;
  • •name是函数名;
  • •statements是函数要执行的代码,也就是一组语句;
  • •return value表示函数的返回值,其中 return 是 Shell 关键字,
  • 专门用在函数中返回一个值;这一部分可以写也可以不写。

如果你嫌麻烦,函数定义时也可以不写 function 关键字

如果写了 function 关键字,也可以省略函数名后面的小括号

例子:

效果展示:

 

 

 

 

 

 

 

 

 

上一篇:有哪些新单词

下一篇:AES简写

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
doublelift doub... #Doublelift宣布退役#说到大师兄大家第一时间想到的就是那个年年不能破八强的传奇ADC,作为...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
哥斯拉怎么画 折纸三头龙基多拉 高井弘明·哥斯拉这个哥斯拉可以翻出双色的部分呢~就是过程对强迫症不太友好建议使用25cm以上双色正方...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...