shell脚本

2023年 9月 26日 35.7k 0

前言

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

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论