执行:(可以传入参数)
chmod +x knowar.sh
./knowvar.sh 1 4 6
filename:./knowvar.sh
first var:1
second var:4
third var:6
4.2 其它默认变量 网页版格式有误!
参数说明
\$#
代表传入参数的个数。
\$*
由所有参数构成的用空格隔开的字符串。
\$\@
每个参数分别用双引号括起来的字符串。
\$\$
脚本当前运行的进程ID。
上一条命令的退出状态(不是stdout,是exit code),0表示正常退出,其他值表示错误。
\$(command)
返回command这条命令的stdout 可嵌套。
'command'
返回command这条命令的stdout 不可嵌套。
5 数组
数组中可以存放多个不同类型的值,只支持一维数组,初始化时不需要指明数组大小。
数组下标从0开始。
5.1 定义
数组用小括号表示,元素之间用空格隔开。
array=(1 abc "def" yrx)
也可以直接定义数组中某个元素的值。
array[0]=9
array[1]=pp
array[2]="qq"
array[3]=dfjb
5.2 读取数组中某个元素的值
格式:
${array[index]}
例如:
array=(1 abc "def" dfjb)
echo ${array[0]}
echo ${array[1]}
echo ${array[2]}
echo ${array[3]}
5.3 读取整个数组
格式:
${array[@]} # 第一种写法
${array[*]} # 第二种写法
5.4 数组长度
类似于字符串。
${#array[@]}
${#array[*]}
6 expr命令6.1 格式
expr命令用于求表达式的值,格式为:
expr 表达式
表达式说明:
用空格隔开每一项;把反斜杠放在shell特定的字符面前(发现表达式运行错误时,可以试试转义);对包含空格和其他特殊字符的字符串要用引号括起来;expr会在stdout中输出结果。如果为逻辑关系表达式,则结果为真,stdout为1,否则为0;expr的exit code:如果为逻辑关系表达式辅助论坛,则结果为真,exit code为0,否则为1.6.2 字符串表达式
#! /bin/bash
str="Hello world!"
echo `expr length "$str"` # 不是单引号,是左上角的符号,表示执行这个命令
echo `expr index "$str" awl`
echo `expr substr "$str" 3 5`
12
3
llo w 注意从0开始!
6.3 算术表达式
expr支持普通的算术操作,算术表达式优先级低于字符串表达式,高于逻辑关系表达式。
#! /bin/bash
a=15
b=7
echo `expr $a + $b` #22
echo `expr $a - $b` #8
echo `expr $a \* $b` #105
echo `expr $a / $b` #2
echo `expr $a % $b` #1
echo `expr \( $a + 1 \) \* \( $b - 1 \)` #96
6.4 逻辑关系表达式
a=3
b=4
echo `expr $a \> $b` # 输出0,>需要转义
echo `expr $a '<' $b` # 输出1,也可以将特殊字符用引号引起来
echo `expr $a '>=' $b` # 输出0
echo `expr $a \<\= $b` # 输出1
c=0
d=5
echo `expr $c \& $d` # 输出0
echo `expr $a \& $b` # 输出3
echo `expr $c \| $d` # 输出5
echo `expr $a \| $b` # 输出3