linux shell脚本相关知识
admin
2023-02-25 00:20:05
0

最近的项目中,有一个编写linux shell脚本的任务。由于之前不是很熟悉,在这个过程中遇到了很多困难,查找了很多资料,也收获了很多。下面宵云网络就分享一下linux shell脚本中常用的知识总结。

1基础语法
1.1变量
使用一个定义过的变量,只要在变量名前面加美元符号即可
your_name="qinjx"
echo $your_name
echo ${your_name}

1.2字符串
字符串可以用单引号,也可以用双引号,也可以不用引号。

单引号
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

双引号
双引号里可以有变量

双引号里可以出现转义字符

1.3传递参数
$# 表示执行脚本传入参数的个数

$* 表示以一个单字符串显示所有向脚本传递的参数。

如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。

$$ 表示脚本运行的当前进程ID号

$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。

如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。

$0 表示执行脚本名称

$1 表示第一个参数

$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

1.4基本运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。

expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

val=expr 2 + 2
条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。

乘号(*)前边必须加反斜杠()才能实现乘法运算;

if...then...fi 是条件语句,后续将会讲解。

在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 "*" 不需要转义符号 "" 。

2常用命令
2.1printf 命令
printf 命令的语法:

printf format-string [arguments...]

printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg

%s %c %d %f都是格式替代符

%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。

%-4.2f 指格式化为小数,其中.2指保留2位小数。

2.2test 命令
test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

文件表达式
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
filename1 -nt filename2 如果 filename1比 filename2新,则为真。
filename1 -ot filename2 如果 filename1比 filename2旧,则为真。

字符串变量表达式
If [ $a = $b ] 如果string1等于string2,则为真(字符串允许使用赋值号做等号)
if [ $string1 != $string2 ] 如果string1不等于string2,则为真
if [ -n $string ] 如果string 非空(非0),返回0(true)
if [ -z $string ] 如果string 为空,则为真
if [ $sting ] 如果string 非空,返回0 (和-n类似)

2.3read命令
-n(不换行) -p(提示语句) -n(字符个数) -t(等待时间) -s(不回显)
如:

read -p "Enter your name:" name
3压缩与解压缩
解压:tar -zxvf FileName.tar
压缩:tar -czvf FileName.tar DirName

3.1五个独立命令
压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。

-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

3.2 五个可选参数
根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

3.3 一个必选参数
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名

相关内容

热门资讯

“725上凯道游行”靠游览车动... 海峡导报综合报道 国民党全代会今天(25日)上午登场,紧接着下午即进行“725反毒油凯道抗议游行”。...
超过阿里巴巴和美团,携程为何挨... 2026年7月,市场监管总局对携程集团有限公司滥用市场支配地位行为作出行政处罚决定,责令携程停止违法...
夺取全年粮食丰收有较好基础(权... 本报记者 郁静娴“农业农村经济保持稳中向好的良好势头,为国民经济延续总体平稳、向新向优的态势提供有力...
山西洪洞发生黄土崩塌,致5人死... 今天(25日)上午,记者从山西省洪洞县应急管理局获悉,洪洞县好义村黄土崩塌受困人员已全部找到。其中,...
瑞尔塔完成核聚变装置内直接能量... (来源:电力国际汇epintl) 六月早些时候,《聚变能源报道》曾刊发过瑞尔塔聚变公司(Realta...
中海油服获得发明专利授权:“一... 证券之星消息,根据天眼查APP数据显示中海油服(601808)新获得一项发明专利授权,专利名为“一种...
特朗普:301关税正式接棒,已... 据凤凰卫视报道,特朗普24日在白宫回应多项议题,强调最高法院推翻旧关税法源后,政府已改采新的法律依据...
夫妇雨天出门疑被电身亡,现场有... 7月24日,新京报记者多方核实获悉,陕西宝鸡永清村22日晚突发雷暴雨,一对中年夫妇雨天在村中道路疑被...
游戏掌机存储卡推荐:三星 T7... 当游戏加载条变短、4K视频秒录、掌机库一键随行——存储不该是妥协的理由。 三星T7,1TB大容量m...
宇树科技创始人兼CEO王兴兴登... 王兴兴登上时代封面。 当地时间7月23日,宇树科技创始人兼CEO王兴兴与其载人机甲产品GD01共同登...