前言
shell 也是我们知识的一个扩展,平常开发中我们可能用不到这个,但是要是想作为一个高效率的懒人程序员,那么这个还是要掌握的,某种情况下他能减轻我们繁琐的操作,能让我们将需要等待的流程操作归一化,这样我们也能省下来喝杯茶唠嗑的时间,或者看看一篇文章,岂不美哉
shell文档
传递参数
shell 脚本运行时是可以接手参数的,跟我们的函数一样,执行脚本时只需要在后面,加个空格直接传递参数即可
例如,参数1:./shell.sh 1
//echo 为输出log
echo "--脚本接收参数测试--"
echo "我是传递的第一个参数,执行脚本文件名 \$0: $0"
echo "我是传递的第二个参数,实际第一个传递参数 \$1: $1"
echo "我是传递的第三个参数,实际第二个传递参数 \$2: $2"
echo "显示所有传递的参数 \$* \$@:$* $@"
echo "实际传递的参数个数(不包含文件名) \$#:$#"
*、@、#
*、@
默认都是获取集合、字符串所有变量的关键字,但其作为参数时,则又有不同
*、@ 的不同,只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,
则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
#
则是对上面集合、字符的全部计数,计算出他们的个数、长度
字符串变量
echo '--打印变量字符串--'
str='哈哈哈'
str2="拼接了变量:$str"
str3="拼接了变量:${str}还追截了尾巴"
str4="拼接了变量,读取其字符长度#:${#str}"
str5='单引号,单纯字符串,拼接变量转换功能无效:${#str}'
str6=${str:1:2}
echo $str
echo $str2
echo $str3
echo $str4
echo $str5
echo "截取字符串:${str6} -- 指令:\${str:start:length}"
数组
echo '--打印数组--'
array=(1, 2, 3, 4)
echo "使用下标获取第n个元素:${array[1]}"
echo "获取所有元素之 *、@ -- *${array[*]} -- @${array[@]}"
echo "获取总长度和字符串一样 ${#array[*]}"
运算
运算符,如果感觉运算符不够用,那么可以参考这里,后面的流程判断也会用到
echo '--运算--'
res=`expr 1 + 2` //expr就是计算的,需要用到反引号
echo "两数之和:$res"
a=10
b=20
res2=`expr $a \* $b`
echo "两数之积,注意关键字转义\\\*:$res2"
条件流程语句
if、else、else if
条件语句比较简单,就是多了个 then 开始、fi 结尾
echo '--if条件语句--'
a=1
b=2
if [[ $a < $b ]]
then
echo 'a < b'
fi
if [[ $a < $b ]]
then
echo 'a b ]]
then
echo 'a > b'
else
echo 'a = b'
fi
注意事项:默认判断会看到使用单括号的,单括号需要转义或使用规定的比较符号,双括号不需要
echo "==、!=、>、=、)、-lt(=)、-le( >>"
echo 'command > file 将输出重定向到 file'
echo 'command >> file 将输出追加的方式重定向到 file'
echo "将输出重定向到 file" > 1.txt
echo "将输出追加的方式重定向到 file" >> 1.txt
最后
除了上面的相信可以看到,脚本语言其实很简单,可以做的却很多,其还有一个更加重要的功能,那就是直接执行 linux 终端指令
我们可以直接将终端直接写进脚本,这样就可以顺序实行了,是不是很方便呢
yarn
yarn build