shell脚本学习笔记

0、赋值变量时等号两边不能有空格,做运算时运算符两侧必须要有空格

1、readonly 变量名

  将变量设置为只读变量,如:

name="gnib"
readonly name

2、unset 变量名

  删除变量,如:

name="gnib"
unset name

3、字符串既可以使用双引号也可以使用单引号,但是单引号有限制:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中转义字符无效

4、字符串拼接

your_name="qinjx"
greeting="hello, "$your_name" !"#双引号外拼接
greeting_1="hello, ${your_name} !"#双引号内拼接
echo $greeting $greeting_1

5、#:大括号内的‘#’字符,用于表示结算长度,例如:

string="abcd"
echo ${#string} #输出 4

my_array=(A B "C" D)
echo "数组元素个数为: ${#my_array[*]}" #输出4
echo "数组元素个数为: ${#my_array[@]}"#输出4
echo "数组单个元素的长度为: ${#my_array[0]}"#输出1

#补充
echo "数组元素个数为: ${my_array[*]}" #输出数组所有元素
echo "数组元素个数为: ${my_array[@]}"#输出数组所有元素

 6、字符串分片(提取子串)

string="runoob is a great site"
echo ${string:1:4} # 表示从下标1开始,输出4个字符。输出 unoo

7、查找子串

string="runoob is a great company"
echo `expr index "$string" is`  # 输出 8

8、作乘法运算时, * 号需要转义

val=`expr $a \* $b`

9、布尔运算符 -a -o 与逻辑运算符 || && 的使用

a=10
b=20

if [ $a -lt 100 -o $b -gt 100 ]
then
   echo "$a 小于 100 或 $b 大于 100 : 返回 true"
else
   echo "$a 小于 100 或 $b 大于 100 : 返回 false"
fi

if [ $a -lt 5 -o $b -gt 100 ]
then
   echo "$a 小于 5 或 $b 大于 100 : 返回 true"
else
   echo "$a 小于 5 或 $b 大于 100 : 返回 false"
fi

if [[ $a -lt 100 && $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

if [[ $a -lt 100 || $b -gt 100 ]]
then
   echo "返回 true"
else
   echo "返回 false"
fi

10、字符串运算符

= 检测两个字符串是否相等,相等返回 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。
a="abc"

if [ $a ]
then
   echo "字符串不为空"
else
   echo "字符串为空"
fi

#字符串不为空

11、read 命令

read 命令一个一个词组地接收输入的参数,每个词组需要使用空格进行分隔;如果输入的词组个数大于需要的参数个数,则多出的词组将被作为整体为最后一个参数接收。

read firstStr secondStr
echo "第一个参数:$firstStr; 第二个参数:$secondStr"
#输入
一 二 三 四
#输出
第一个参数:一; 第二个参数:二 三 四


read -p "请输入一段文字:" -n 6 -t 5 -s password
echo "\npassword is $password"
#输出
请输入一段文字:
password is asdf

 

posted on 2018-04-23 21:08  GnibChen  阅读(223)  评论(0编辑  收藏  举报