三、 Shell字符串详解
1.string:字符串
输出 “helloworld”
2.查看字符串
长度(个数):echo ${#str1} 查看str1变量字符串个数 #存储str1的值供$调用。 *、@都有各自本身的含义不能在此处使用
选择显示:echo ${str1:0:1} 0:1str1变量字符串从第一个字符开始取值,只取一个。显示h
取反:echo ${str1:0-1:1}从右往左截取第一个字符,只取一个。显示o
echo ${str1:0-2:1}从右往左截取第二个字符,只取一个。显示l 。。。。。
优化:for i in {1..5};do echo $i;done(正向排序竖向1-5) /
反向排序竖向str1的内容:len=${#str1} for i in `seq 1 $len` ;do echo ${str1:0-$i:1};done
脚本模式:
换行
不换行:
3.指定字符串截取
截取右侧字符 echo ${str1#* l}截取第一个l往后的字符串 echo ${str1##*l}截取第二个l之后的字符
截取左侧字符 echo${str1%l*}截取第一个l往前的子字符串
4、Shell的格式化输出printf 默认不换行
换行加精确小数点后两位

四、条件测试命令
1.命令返回结果 $?
命令执行成功显示0 不成功非0
2.[ ] 与 test 等效
shell语句中用来条件测试
test 1 -gt 2 gt:>
$? 不显示零
3.[ ] 和 [[ ]] 的区别
区别一、[[ ]]仅在特定shell环境下使用
区别二、[[ ]]可支持数学类型的操作数 < > 没说就不支持 ,而[ ] 都不支持
区别三、[ ]中 用 -a ; -o 表示逻辑与和逻辑或,[[ ]]中用&& ;||表示逻辑与和逻辑或 不支持-a -o
区别四、[ ]中 ==是字符匹配(精确) ;[[ ]]中==是模式匹配(模糊)
区别五、[ ]不支持正则匹配,[[ ]]支持用=~(包含什么什么)进行正则匹配
区别六、[ ]仅在部分Shell中支持用()进行分组,[[ ]]均支持
区别七、 [ ]中如果变量没有定义,那么需要用双引号引起来,表示字符串,在[[ ]]中不需要
4.test表达式
语法1:test <测试表达式> 说明:test命令和<测试表达式>之间至少有一个空格
在shell中,大于用 -gt 表示,小于用 -lt 表示,大于或等于用 -ge 表示,小于或等于用 -le表示 ,不相等用-ne 表示 此处返回字符串学习最顶
((1>2))里面不需要用空格
5.变量测试
语法规则:-v VAR 变量var是否被定义
[-v str3] echo $? 显示1 未被定义
语法规则:-r VAR 变量var是否被引用
[-R str3] echo$? 显示1未被引用
5.2文件测试表达式

5.3字符串测试表达式
用法:

5.4整数测试表达式
5.5逻辑操作符

检测当前目录下是否存在1.txt; 是否为文件; 如果都是真的则执行下面 是否是.txt类型文件
5.6()与 { }
( )和 { }都可以将多个命令组合再一次,批量执行,{ } 里的内容需要与两侧用空格隔开并在命令结尾加上;
( )会开启子shell,并且list中变量赋值及内部命令执行后,将不再影响后续的环境
与运行命令时 bash 和source类似
{ } 不会开启子shell,在当前shell中运行,会影响当前shell环境
案例 磁盘空间检查 大于80显示不足 小于80显示充足
5.7 使用read命令命令来接受输入

设定不显示密码、3秒后返回
!!
2583

被折叠的 条评论
为什么被折叠?



