实例:****
以下实例我们向脚本传递三个参数,并分别输出,其中 $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,,则 " @" 等价于 "1" "2" "3"(传递了三个参数)。
1.1. 字符串****
字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。
1.1.1. 单引号****
| name='乔布斯'str='我很崇拜str |
|---|
输出结果为:****
我很崇拜$name
单引号字符串的限制:****
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的,单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
1.1.1. 双引号****
| name="乔布斯"str="我很崇拜str |
|---|
输出结果为:
我很崇拜 乔布斯
双引号的优点:
1) 双引号里可以有变量
2) 双引号里可以出现转义字符
1.1.2. 拼接字符串****
1.1.2.1. 使用双引号拼接
test6.sh
| #!/bin/bashyourname**="吴恩达"wenhou_1="你好,yourname" ."wenhou_3**="你好,"yourname\" ."**echo** **wenhou_1 wenhou_3 |
|---|
输出结果为:
你好,吴恩达 . 你好,吴恩达 . 你好,"吴恩达" .
1.1.2.2. 使用单引号拼接
test7.sh
| #!/bin/bashyourname**="乔布斯"wenhou_4='你好,yourname . ''wenhou_6**='你好,"wenhou_3 wenhou_5 |
|---|
输出结果:
你好,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 ]。