Sheel学习---2

来源:互联网 发布:mysql add user 编辑:程序博客网 时间:2024/06/01 08:11

Shell 数组
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小。
数组元素的下标由0开始。
Shell 数组用括号来表示,元素用”空格”符号分割开,语法格式如下:
array_name=(value1 … valuen)
也可以使用下标来定义数组
读取数组
读取数组元素值的一般格式是:
${array_name[index]}
获取数组中的所有元素
使用@ 或 * 可以获取数组中的所有元素
获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同
原生bash不支持简单的数学运算,但是可以通过其他命令来实现
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

注意使用的是反引号 ` 而不是单引号 '

表达式和运算符之间要有空格,完整的表达式要被 '' 包含,注意这个字符不是常用的单引号,在 Esc 键下边。
注意:条件表达式要放在方括号之间,并且要有空格。
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:运算符。。。说明。。。。。。。。。。。。。。。。举例-eq 检测两个数是否相等,相等返回 true。    [ $a -eq $b ] 返回 false-ne 检测两个数是否相等,不相等返回 true。   [ $a -ne $b ] 返回 true-gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false-lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true-ge 检测左边的数是否大于等于右边的,如果是,则返回 true。   [ $a -ge $b ] 返回 false-le 检测左边的数是否小于等于右边的,如果是,则返回 true。   [ $a -le $b ] 返回 true

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

运算。。。说明。。。。。。。。。。。。。。。。。。。  举例!   非运算,表达式为 true 则返回 false,否则返回 true。  [ ! false ] 返回 true。-o  或运算,有一个表达式为 true 则返回 true。[ $a -lt 20 -o $b -gt 100 ] 返回 true-a  与运算,两个表达式都为 true 才返回 true。[ $a -lt 20 -a $b -gt 100 ] 返回 false

逻辑运算符
以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:

运算符。说明  。举例&&  逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false||  逻辑的 OR  [[ $a -lt 100 || $b -gt 100 ]] 返回 true

字符串运算符
下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”

运算符。说明。。。。。。。。。。。。。。。。。。举例=   检测两个字符串是否相等,相等返回 true。  [ $a = $b ] 返回 false!=  检测两个字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true-z  检测字符串长度是否为0,为0返回 true。  [ -z $a ] 返回 false-n  检测字符串长度是否为0,不为0返回 true。 [ -n $a ] 返回 truestr 检测字符串是否为空,不为空返回 true。   [ $a ] 返回 true。

文件测试运算符
文件测试运算符用于检测 Unix 文件的各种属性。

操作符。。。说明。。。。。。。。。。。。。。。。。。。。。。。举例-b file 检测文件是否是块设备文件,如果是,则返回 true。  [ -b $file ] 返回 false-c file 检测文件是否是字符设备文件,如果是,则返回 true。 [ -c $file ] 返回 false-d file 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。    [ -f $file ] 返回 true-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。  [ -g $file ] 返回 false-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。  [ -k $file ] 返回 false-p file 检测文件是否是有名管道,如果是,则返回 true。   [ -p $file ] 返回 false-u file 检测文件是否设置了 SUID 位,如果是,则返回 true。  [ -u $file ] 返回 false-r file 检测文件是否可读,如果是,则返回 true。  [ -r $file ] 返回 true-w file 检测文件是否可写,如果是,则返回 true。  [ -w $file ] 返回 true-x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true-e file 检测文件(包括目录)是否存在,如果是,则返回 true。    [ -e $file ] 返回 true

Shell echo命令
用于字符串的输出。命令格式:
echo string
1.显示普通字符串
2.显示转义字符
3.显示变量 read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
4.显示换行

# -e 开启转义

5.显示不换行

 # -e 开启转义 \c 不换行

6.显示结果定向至文件
7.原样输出字符串,不进行转义或取变量(用单引号)
8.显示命令执行结果

注意使用的是反引号 ` 而不是单引号 '

Shell printf 命令:
printf 命令的语法:
printf format-string [arguments…]
参数说明:
format-string: 为格式控制字符串
arguments: 为参数列表。

printf的转义序列序列  说明\a  警告字符,通常为ASCII的BEL字符\b  后退\c  抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略\f  换页(formfeed)\n  换行\r  回车(Carriage return)\t  水平制表符\v  垂直制表符\\  一个字面上的反斜杠字符\ddd    表示1到3位数八进制值的字符。仅在格式字符串中有效\0ddd   表示1到3位的八进制值字符
%d %s %c %f 格式替代符详解:d: Decimal 十进制整数 -- 对应位置参数必须是十进制整数,否则报错!s: String 字符串 -- 对应位置参数必须是字符串或者字符型,否则报错!c: Char 字符 -- 对应位置参数必须是字符串或者字符型,否则报错!f: Float 浮点 -- 对应位置参数必须是数字型,否则报错!如:其中最后一个参数是 "def"%c 自动截取字符串的第一个字符作为结果输出。

Shell test 命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

数值测试参数  说明-eq 等于则为真-ne 不等于则为真-gt 大于则为真-ge 大于等于则为真-lt 小于则为真-le 小于等于则为真
字符串测试参数  说明=   等于则为真!=  不相等则为真-z 字符串  字符串的长度为零则为真-n 字符串  字符串的长度不为零则为真
文件测试参数  。。。说明-e 文件名  如果文件存在则为真-r 文件名  如果文件存在且可读则为真-w 文件名  如果文件存在且可写则为真-x 文件名  如果文件存在且可执行则为真-s 文件名  如果文件存在且至少有一个字符则为真-d 文件名  如果文件存在且为目录则为真-f 文件名  如果文件存在且为普通文件则为真-c 文件名  如果文件存在且为字符型特殊文件则为真-b 文件名  如果文件存在且为块特殊文件则为真

Shell 流程控制
if 语句语法格式:
if condition
then
command1
command2

commandN
fi
if else 语法格式:
if condition
then
command1
command2

commandN
else
command
fi
for 循环
与其他编程语言类似,Shell支持for循环。
for循环一般格式为:
for var in item1 item2 … itemN
do
command1
command2

commandN
done
写成一行:
for var in item1 item2 … itemN; do command1; command2… done;
while 语句
while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:
while condition
do
command
done
无限循环
无限循环语法格式:
while :
do
command
done
或者
while true
do
command
done
或者
for (( ; ; ))
until 循环
until循环执行一系列命令直至条件为真时停止。
until循环与while循环在处理方式上刚好相反。
一般while循环优于until循环,但在某些时候—也只是极少数情况下,until循环更加有用。
until 语法格式:
until condition
do
command
done
条件可为任意测试条件,测试发生在循环末尾,因此循环至少执行一次
case
Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:
case 值 in
模式1)
command1
command2

commandN
;;
模式2)
command1
command2

commandN
;;
esac
case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
跳出循环
在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:break和continue。
break命令
break命令允许跳出所有循环(终止执行后面的所有循环)。
continue
continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

原创粉丝点击