Linux之Shell脚本编程2(转载)

0.上节回顾

  在上一篇博文中,主要介绍了Shell脚本编程的背景,怎样创建人生中第一个Shell脚本以及Shell变量等内容。接下来将接着介绍介绍Shell编程,主要是围绕着Shell运算、流程控制语句、自定义函数以及脚本调试等方面展开。

1.运算符

格式 :expr m + n 或$((m+n)) 注意expr运算符间要有空格
expr命令:对整数型变量进行算术运算 (注意:运算符前后必须要有空格)

例:计算(2 +3 )×4 的值

  1. 分步计算

  2. 一步完成计算

$()与${}的区别

  $( )的用途和反引号一样,用来表示优先执行的命令
    eg:echo $(ls a.txt)
  就是取变量了𝑒𝑔:𝑒𝑐ℎ𝑜{PATH}
  $((运算内容)) 适用于数值运算
    eg: echo $((3+1*4))

2.内置test命令

  内置test命令常用操作符号[]表示,将表达式写在[]中,如下:

注意:expression首尾都有个空格,和符号[]有空格分割;
eg:

  测试范围:整数、字符串、文件
  表达式的结果为真,则test的返回值为0,否则为非0。当表达式的结果为真时,则变量$?的值就为0,否则为非0

2.1.字符串测试

eg:

2.2.整数测试:

eg:

如下示例两个变量值的大小比较:

-gt表示greater than大于的意思;-le表示less equal表示小于等于。

2.3.文件测试:

eg:

2.4.多重条件测试:

eg:

3.流程控制语句

3.1.if/else命令

  1. 单分支if条件语句

中括号[]内部和条件判断式用空格隔开;

或者

eg:

单分支条件语句需要注意几个点:

  if语句使用fi结尾,和一般语言使用大括号结尾不同。
  [ 条件判断式 ] 就是使用test命令判断,所以中括号和条件判断式之间必须有空格
  then后面跟符号条件之后执行的程序,可以放在[]之后,用“;”分割,也可以换行写入,就不需要";"了。

  1. 多分支if条件语句

示例:

eg:

3.2.case命令

  case命令是一个多分支的if/else命令,case变量的值用来匹配value1,value2,value3等等。匹配到后则执行跟在后面的命令直到遇到双分号为止(;;)case命令以esac作为终止符。

格式

3.3.for循环

  for循环命令用来在一个列表条目中执行有限次数的命令。比如,你可能会在一个姓名列表或文件列表中循环执行同个命令。for命令后紧跟一个自定义变量、一个关键字in和一个字符串列表(可以是变量)。第一次执行for循环时,字符串列表中的第一个字符串会赋值给自定义变量,然后执行循环命令,直到遇到done语句;第二次执行for循环时,会右推字符串列表中的第二个字符串给自定义变量,依次类推,直到字符串列表遍历完。

3.4.while循环

  while命令根据紧跟其后的命令(command)来判断是否执行while循环,当command执行后的返回值(exit status)为0时,则执行while循环语句块,直到遇到done语句,然后再返回到while命令,判断command的返回值,当得打返回值为非0时,则终止while循环。

第一种

练习:求1-10 各个数的平方和

第二种:

  • 综合使用
    根据参数执行不同命令

3.5.自定义函数

  函数代表着一个或一组命令的集合,表示一个功能模块,常用于模块化编程。
  以下是关于函数的一些重要说明:

    在shell中,函数必须先定义,再调用

    使用return value来获取函数的返回值

    函数在当前shell中执行,可以使用脚本中的变量。

  函数的格式如下:

注意:
  如果函数名后没有(),在函数名和{ 之间,必须要有空格以示区分。函数返回值,只能通过$? 系统变量获得,可以显示加:return 返回值,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)

4.脚本调试

5.shell的字符串和数字的转化(数字自动做字符串处理,变量名做字符串输出用单引号)

shell里面怎么样把字符串转换为数字?
例如:a="024"

1,用${{a}}
2,用let达到(()) 运算效果。

3,双括号运算符:

等同于:


本文源站链接:https://turbock79.cn/?p=1131
附原文链接

赞赏

微信赞赏支付宝赞赏

发表评论

邮箱地址不会被公开。 必填项已用*标注