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 ] 返回 true。str 检测字符串是否为空,不为空返回 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命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。
- Sheel学习---2
- linux sheel command
- Sheel 希尔排序 -mobai_dalao
- sheel任务由前台切换到后台
- Shell(Bash) - PHP与Sheel交互
- 使用java执行linux的sheel命令
- C#获取excel中sheel名称
- linux sheel脚本里面“$? -eq o”
- bash sheel 环境变量 PS1(是数字1)
- Sheel 脚本 基本语句及逻辑关系比较
- Java合并多个Excel中的Sheel表
- Linux下用sheel脚本完整实现tree功能
- linux sheel脚本里面,在if语句里“$? -eq o” 这是什么意思!!!
- Java代码操作mongodb与mongo查询sheel对应-----(列出每一步所得出的表格)
- 学习2
- 学习2
- 学习2
- 学习2
- 网关协议学习:CGI、FastCGI、WSGI
- python: bisect库
- Spring AOP基于@AspectJ开发
- -bash: reboot: command not found
- css hack
- Sheel学习---2
- Sequoiadb的SequoiaSql应用开发实践
- android双向选择的进度条
- python爬虫案例——糗事百科数据采集
- JAVA实现微信支付
- excel之数字转字符串,取消科学计数法
- Spring框架之基础类—BeanMetadataElement接口
- C++程序设计案例实训教程第15章
- BST