几种循环的区别:
until循环, 只要特定条件为假,until语句就会执行。
while循环 只要特定条件为真,”while” 语句就会执行
for循环 ”for” 循环总是接收 “in” 语句之后的某种类型的字列表。
i++的意思其实就是i+1
双小括号:
一、echo $((16#5f)) 结果为95 (16进位转十进制)
二、 重定义变量值,比如 a=5; ((a++)) 可将 $a 重定义为6
数值比较参数:
等于 Is equal to the 【-eq】
大于或等于 Greater than or equal to 【-ge】
大于 Is greater than 【-gt】
小于或等于 Less than or equal to 【-le】
小于 Less than 【-lt】
不等于 Is not equal to 【-ne】
更大的 大于 greater
平等的 等于 equal
少 less
比 than
read命令作用:
从标准输入中读取一行,并把输入行的每个字段的值指定给shell变量
参数:
-a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。
-d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志,会举例说 明。
-p 后面跟提示信息,即在输入前打印提示信息。
-e 在输入的时候可以时候命令补全功能。
-n 后跟一个数字,定义输入文本的长度,很实用。
-r 屏蔽,如果没有该选项,则作为一个转义字符,有的话 就是个正常的字符了。
-s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。
-t 后面跟秒数,定义输入字符的等待时间。
-u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。
-z 判断 变量的值,是否为空; zero = 0
- 变量的值,为空,返回0,为true
- 变量的值,非空,返回1,为false
-n 判断变量的值,是否为空 name = 名字 - 变量的值,为空,返回1,为false
- 变量的值,非空,返回0,为true
位置参数变量是标准的数字:
$0是程序名,$1是第 一个参数,$2是第二个参数,依次类推,直到第九个参数$9。
-z 判断 变量的值,是否为空; zero = 0 - 变量的值,为空,返回0,为true
- 变量的值,非空,返回1,为false
-n 判断变量的值,是否为空 name = 名字 - 变量的值,为空,返回1,为false
- 变量的值,非空,返回0,为true
||和&&的用法:
逻辑或,只有||前面的执行不成功 才会执行后面的
逻辑与,只有&&前面的执行成功,才会执行后面的
shell的特殊变量
$0当前脚本的文件名
$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#传递给脚本或函数的参数个数。
$传递给脚本或函数的所有参数。
$@传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $ 稍有不同
$?上个命令的退出状态,或函数的返回值。
$$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程IDbr/>$*和$@的区别
$ 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。
但是当它们被双引号(" ")包含时,"$" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
${#P_array[]} shell中这个是什么意思?
其中(P_array是数组的名字)
获取数组元素的个数: ${#arrayname[@]}
获取数组中的一个元素: $arrayname[index]
修改该数组中的一个元素: arrayname[index]=新值
获取数组中的所有元素: ${arrayname[]}
函数:
返回值:result的用法
result=$(db1) #将函数的输出保存到变量中
echo "The new value is $result" #输出变量(也就是相当于输出的函数的输出)result=$(addem 10 15) #向函数addem里面传递两个参数,然后将传递完参数的执行结果保存到变量result中
echo "Te new value is $result" #输出变量result里面保存的结果