十二. [博学谷学习记录]|超强总结,用心分享|大数据 Linux(十二)

102 阅读2分钟

实例:****

以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名: test5.sh

#!/bin/bash 

echo "Shell 传递参数实例!" ;  

echo "执行的文件名:$0" ;  

echo "第一个参数为:$1" ;  

echo "第二个参数为:$2" ;  

echo "第三个参数为:$3" ;  

echo "参数个数为:$#" ;  

echo "传递的参数作为一个字符串显示*:$*" ;

执行脚本:

[root@node1 shell]# chmod +x test5.sh

[root@node1 shell]# ./test5.sh aaa bbb ccc

Shell 传递参数实例!

执行的文件名:./demo4.sh

第一个参数为:aaa

第二个参数为:bbb

第三个参数为:ccc

参数个数为:3

传递的参数作为一个字符串显示*:aaa bbb ccc

* 与 @ 区别:

相同点:都是引用所有参数。

不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " "等价于"123"(传递了一个参数),而"* " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

1.1. 字符串****

​ 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。

1.1.1. 单引号****

name='乔布斯'str='我很崇拜nameechoname'echo str

 

输出结果为:****

我很崇拜$name

单引号字符串的限制:****

单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的,单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

1.1.1. 双引号****

name="乔布斯"str="我很崇拜name"echoname"echo str

 

输出结果为:

我很崇拜 乔布斯

双引号的优点:

1)  双引号里可以有变量

2)  双引号里可以出现转义字符

 

1.1.2. 拼接字符串****

1.1.2.1. 使用双引号拼接

test6.sh

#!/bin/bashyourname**="吴恩达"wenhou_1="你好,yourname."wenhou2="你好,"yourname ."wenhou_2**=**"你好," **yourname" ."wenhou_3**="你好,"yourname\" ."**echo**  **wenhou_1  wenhou2 wenhou_2**  **wenhou_3

 

输出结果为:

你好,吴恩达 . 你好,吴恩达 . 你好,"吴恩达" .

1.1.2.2. 使用单引号拼接

test7.sh

#!/bin/bashyourname**="乔布斯"wenhou_4='你好,yourname.wenhou5=你好,yourname.'wenhou_5**=**'你好,' **yourname . ''wenhou_6**='你好,"yourname".echo yourname" .'**echo**  **wenhou_3  wenhou4 wenhou_4**  **wenhou_5

 

输出结果:

你好,yourname.你好,乔布斯.你好,"yourname. 你好,乔布斯. 你好,"yourname" .

1.1.1. 获取字符串长度****

test8.sh

#!/bin/bashstring**=**"jobs"echo {string}    # 输出结果: jobs**echo** {#string}   # 输出结果: 4

1.1.2. 提取子字符串****

以下实例从字符串索引为2 的字符开始截取 4 个字符

test9.sh

#!/bin/bashstring**=**"敢于亮剑决不后退"echo ${string:2:2}    # 输出结果为: 亮剑

 

 

1.1. 算术运算符****

1.1.1. 简介****

Shell 和其他编程一样,支持包括:算术、关系、布尔、字符串等运算符。原生 bash 不支持简单的数学运算,但是可以通过其他命令来实现,例如expr。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

例如,两个数相加:****

val=expr 2 + 2echo $val

 

注意:****

表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2。

完整的表达式要被 包含,注意不是单引号,在 Esc 键下边。

下表列出了常用的算术运算符,假定变量 a为10,变量b为20:

运算符****说明****举例****
+加法expr $a + $b 结果为 30。
-减法expr $a - $b 结果为 -10。
*乘法expr $a \* $b 结果为 200。
/除法expr $b / $a 结果为 2。
%取余expr $b % $a 结果为 0。
=赋值a=$b 将把变量 b 的值赋给 a。
==相等。用于比较两个数字,相同则返回 true。[ a == b ] 返回 false。
!=不相等。用于比较两个数字,不相同则返回 true。[ a != b ] 返回 true。

 

注意: 条件表达式要放在方括号之间,并且要有空格,例如: [a==b] 是错误的,必须写成 [ a == b ]。