shell脚本编程快速入门

发布时间:2024年01月15日

前言

shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。一般是一种.sh文件,通过"sh 文件名"或"bash 文件名"运行(带后缀)
shell脚本编程本质上就是将一群shell命令打包到一个文件中去批量运行.通过打包命令的方式,让用户不需要每次都输入一堆命令来简化使用流程.

变量及输入

shell中变量可以不需要定义类型,直接变量名,等于右边定义的值即可,等号两边不加空格.使用的时候采用"$变量名"或"${变量名}“的方式获取变量值.建议使用后者,可以用来区分后面部分是变量名的一部分还是属于其他部分(看代码颜色也看得出来).
shell中可以直接在运行脚本的命令后面加上变量来作为脚本的输入(空格区分不同多个输入),脚本内通过”$数字"或"${数字}"的方式来获取第N个参数,从1开始,也推荐使用后者.

#!/bin/bash
num1=3
num2=4
echo "num1:$num1 num2:$num2"
echo "num1:$num1num2:$num2"
echo "num1:${num1}num2:${num2}"
echo "input1:$1 input2:${2}"

在这里插入图片描述
第二个输出将num1num2当成是一个变量名,然后获取到空输出就为空.

算术运算

使用$[基本运算表达式],在[]中间放运算的内容可以做简单的算术运算.

#!/bin/bash
num1=3
num2=4
echo $[${num1}+${num2}]

在这里插入图片描述

if else逻辑判断

shell中的逻辑判断一般结合test命令使用
格式:fi是一定要有的,else可以没有

if test A 比较条件 B
then
业务逻辑
else
业务逻辑
fi

常用比较条件有:

参数说明
-eq等于则为真
=等于则为真
==等于则为真
-ne不等于则为真
!=不等于则为真
-gt大于则为真
-ge大于等于则为真
-lt小于则为真
-le小于等于则为真

还有另外一种写法不需要结合test命令,直接用[]将判断逻辑写在内部(注意:这种写法要求参数运算符以及中括号两边都要有空格)
if [ A -eq B ]
then
业务逻辑
else
业务逻辑
fi

字母逻辑运算符标签

#!/bin/bash
num1=4
num2=4
num3=3
#写法1
if test ${num1} -eq ${num2}
then
echo "相等"
else
echo "不相等"
fi

if test ${num1} -eq ${num3}
then
echo "相等"
else
echo "不相等"
fi

#写法2
if [ ${num1} -eq ${num2} ]
then
echo "相等"
else
echo "不相等"
fi

在这里插入图片描述

数学逻辑符(单个=也是一样的)

#!/bin/bash
num1=4
num2=4
num3=3
if test ${num1} == ${num2}
then 
echo "相等"
else
echo "不相等"
fi

if test ${num1} == ${num3}
then
echo "相等"
else
echo "不相等"
fi

if [ ${num1} == ${num2} ]
then
echo "相等"
else
echo "不相等"
fi

在这里插入图片描述

其他数学逻辑符号

数学比较符号只有=和!=是可用的,>、<这些符号在运算的时候不会报错,但运算的结果是不符合预期的。

#!/bin/bash
num1=4
num2=4
num3=5
if test ${num1} != ${num2}
then
echo "不相等"
else
echo "相等"
fi

if test ${num1} > ${num3}
then
echo "大于"
else
echo "小于相等"
fi

if [ ${num1} < ${num2} ]
then
echo "小于"
else
echo "小于相等"
fi

在这里插入图片描述

函数

shell中也像其他编程语言一样可以定义函数,不过格式上有差异。因为脚本是按照顺序执行的,所以函数的定义要在调用函数的代码前面。
格式:
testFun(){
}
入参:函数的入参通过调用函数,在后面用空格隔开来传。函数内部通过"$数字"或"${}“的方式获取第N个参数,下标从1开始,和脚本传参差不多。注意:大于等于第十个参数需要用”${}"的方式才能获取到参数值。
返回值:函数的函数值不需要在函数中定义,需要就返回。没有手动返回值也有默认返回值。在函数调用外层调用完函数之后使用$?获取函数返回值.

#!/bin/bash
num1=4
num2=4
num3=5
testFun(){
sum=$[$1+${2}]
return ${sum}
}
testFun 1 2
echo "sum:$?"

在这里插入图片描述

输入输出重定向

输入输出重定向,听起来挺迷惑人的。但简单来说就是,按照原本的命令执行,会在控制台打印东西的就叫输出。在控制台或者文件输入到程序的就是输入。
而重定向就是指把原本要打印在控制台的数据,不再打印到控制台,而是传输到其他地方。
比如:
echo “hello world” > hello
这条命令可以分成两部分,第一部分是前面的echo “hello world”,如果只执行这部分命令,会在控制台打印hello world,而在后面加上> hello之后,就是将本应输出在控制台的输出,重定向(写入)hello文件中。(文件不存在则创建文件并写入,文件存在则覆盖掉之前的内容)

#!/bin/bash
echo "hello world" > hello

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_43975276/article/details/135602502
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。