1.字符串
1.1.截取字符串
1.1.1.获取’='右边的字符串
str="aaaaaaaaaaaaaa=bbbbbbb";
str1=${
str#*=} #匹配第一个,进行截取
echo "new str1=$str1"
str2=${
str##*=} #匹配最后一个,进行截取
echo "new str2=$str2"
1.1.2.获取’='左边的字符串
str="aaaaaaaaa=---cc---";
str1=${
str%cc*}#匹配第一个,进行截取
echo "new str1=$str"
str2=${
str%%cc*} #匹配最后一个,进行截取
echo "new str2=$str"
1.1.3.从左边开始计数
语法:${string: start :length}
test="login.fracong.com"
echo ${
test: 6: 7}
结果:fracong
说明:如果不写length
则截取到最后位置。
1.1.4.从右边开始计数
语法:${string: 0-start :length}
test="login.fracong.com"
echo ${
test: 0-11: 7} #从右边往左数11为开始,然后往右计数获取7位,其中0-为固定写法
结果:fracong
说明:如果不写length
则截取到最后位置。
1.2.字符串的大小写转换
使用typeset
,有两个选项 -l 代表小写 -u 代表大写。用法:
typeset -u name
name='asdasdas'
echo $name
typeset -l ame
ame='asdasdas'
echo $ame
2.if…elif…else的使用
2.1语法
if [ condition1 ];then
#action1...
elif test condition;then
#action2....
elif [[ condition3 ]];then
#action3....
else
#action3...
fi
重点说明*:
- 中括号内两端必须要有空格。
- []、test condition二者是等价的,[[]]更加强大。
2.2.条件内部或与运算符
-a
表示and; -o
表示or; !
表示非
TEST="A"
if [ $TEST = "A" -a $TEST = "a" ]; then
echo "Test A";
else
echo "Test Other";
fi
if [ $TEST = "A" -o $TEST = "a" ]; then
echo "Test A";
else
echo "Test Other";
fi
if [ !$TEST = "B" ]; then
echo "Test A";
else
echo "Test Other";
fi
结果为:
Test Other
Test A
Test A
2.3.整数比较
-eq 测试两个整数是否相等
-ne 测试两个整数是否不等
-gt 测试一个数是否大于另一个数
-lt 测试一个数是否小于另一个数
-ge 大于或等于
-le 小于或等于
2.4.逻辑关系
TEST="A"
if [ $TEST = "A" ] && [ $TEST = "a" ]; then #逻辑与
echo "Test A";
else
echo "Test Other";
fi
if [ $TEST = "A" ] || [ $TEST = "a" ]; then #逻辑或
echo "Test A";
else
echo "Test Other";
fi
2.5.字符串比较
== 等于 两边要有空格
!= 不等
> 大于
< 小于
2.6.其他特殊测试
-z string 测试指定字符是否为空,空着真,非空为假
-n string 测试指定字符串是否为不空,空为假 非空为真
-e file 测试文件是否存在
-f file 测试文件是否为普通文件
-d file 测试指定路径是否为目录
-r file 测试文件对当前用户是否可读
-w file 测试文件对当前用户是否可写
-x file 测试文件对当前用户是都可执行
-z 是否为空 为空则为真
-a 是否不空
3.获取键盘输入
TEST=""
if [ -z "$TEST" ];then #判断'TEST'的值是否为空值,为空值则为真。
read -p "Please input your test:" TEST #获取键盘输入的数据
echo "Test:$TEST" #在控制台输出
fi
4.文件的读写
4.1.创建文件
if [ ! -f /home/fracong/test.sh ]; then
echo create test.sh
touch /home/fracong/test.sh
fi
4.2.读文件
TEST=""
if [ -f "/home/fracong/test.sh" ];then
TEST=`grep "export TEST=" /home/fracong/test.sh`
TEST=${
TEST#*=} #获取=号右侧数据
echo "The test:$TEST"
fi
4.3.写文件(追加)
TEST="AAAAAA"
if [ -Z "$TEST" ];then
echo "export TEST=$TEST" >>/home/fracong/test.sh
fi
4.4.写文件(替换)
TEST="AAAAAA"
if [ -Z "$TEST" ];then
sed -i "/^.*TEST=.*$/cexport TEST=$TEST" /home/fracong/test.sh
fi
关于sed的简单说明:
- -i 直接在原文件上进行修改
/^.*TEST=.*$/
为正则表达式,选择出含有TEST=的行- c 取代行,用后面的字符串进行取代
5.退出程序exit
exit 0:正常运行程序并退出程序;
exit 1:非正常运行导致退出程序;
0代表正常推出,非0代表非正常推出。