首页 > 编程知识 正文

shell脚本的语法,shell脚本介绍

时间:2023-05-05 17:38:09 阅读:216083 作者:2130

1.创建一个shell脚本
使用vim或vi编辑器可以创建一个.sh文件。

在shell脚本中书写shell脚本声明,echo就和Java中的println一样。

需要注意的是,保存后的shell脚本是无法直接运行的,我们通过ll可以看出,是没有运行权限的,所以需要给它授权。

授权后再使用ll查看一下,就可以发现现在有了执行权限了。

执行文件。这里需要特殊说明一下./ 只是运行shell脚本的一种方法,还可以使用 /精明的小熊猫/bash 贪玩的衬衫.sh

2.shell中声明和使用变量
声明格式:变量名=“xxxxxxxxxx” (注意:变量名和=之间不能有空格)

使用格式:$变量名 或 ${变量名},变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界


删除变量:unset 变量名

3.shell中的字符串
单引号和双引号:单引号中的内容会被当作普通字符串(java的String)来处理,双引号中的内容会按照其原本的属性进行输出,可用 转义字符“” 将特殊符号(如$、、!等)变为一般字符。



字符串长度和截取:


3.shell数组:
声明:数组名=(x,x,x,x…)
使用:$ {数组名[index]}
获取所有元素:$ {数组名[@]}
数组元素个数:$ {#数组名[@]}

4.向shell脚本传递参数

shell脚本在执行之前,我们可以给它传递参数,在脚本中我们可以使用参数:

脚本中:

//其中$0为执行的文件名,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……echo "Shell 传递参数实例!";echo "执行的文件名:$0";echo "第一个参数为:$1";echo "第二个参数为:$2";echo "第三个参数为:$3";

控制台中:

$ ./test.sh 1 2 3

5.find查找指令

格式:find [path] [选项] 参数

-name
按文件名查询

-perm
按文件权限查询

-size
按文件的大小查找

-user
按用户(属主)查询

-group
按用户组查询

-type
按文件的类型查询

b - 块设备文件。

d - 目录。

c - 字符设备文件。

p - 管道文件。

l - 符号链接文件。 (这是个小写的L)

f - 普通文件。

案例:
查找系统中/home目录下的java文件

find /home -name "*.java"

6.sed
和vim差不多,都是处理文本的工具,但是两者也有区别。默认情况下不修改源文件,因为sed是将源文件内容逐行copy到一个临时缓冲区(模式空间),对其进行编辑,行处理结束后,将其输出到屏幕上,也可以通过数据重定向将结果导入到新的文件中去。
语法:sed [选项] “[动作]” [filename]

选项:
-e :允许对输入数据应用多条sed命令进行编辑。
-i:表示直接操作源文件

动作:
s:字符串匹配/查找

i: 插入

a:追加

d: 删除

c:替换
案例:
把demo文本文件中的h替换成H

sed "s/h/H/g" demo

7.if

#!/精明的小熊猫/basha=10b=10if [ $a -eq $b ];thenecho "两个数相等"fi

8.if else

#!/精明的小熊猫/bashstring="hello"string1="HELLO"if test $string = $string1thenecho "两个字符串一样"elseecho "两个字符串不一样"fi

9.if else-if else语法

a=10b=20if [ $a == $b ]then echo "a 等于 b"elif [ $a -gt $b ]then echo "a 大于 b"elif [ $a -lt $b ]then echo "a 小于 b"else echo "没有符合的条件"fi

10.test判断
test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
上面的代码中出现了-gt,-lt这一类奇怪的标识,下面就来解释:

数值类型:

代码:

num1=100num2=100if test $[num1] -eq $[num2]then echo '两个数相等!'else echo '两个数不相等!'fi

字符串类型:

代码:

num1="piaolaoshi"num2="PIAOLAOSHI"if test $num1 = $num2then echo '两个字符串相等!'else echo '两个字符串不相等!'fi

文件类型:

if test -e ./bashthen echo '文件已存在!'else echo '文件不存在!'fi

11.循坏语句

for:
格式:

for var in item1 item2 ... itemNdo command1 command2 ... commandNdone

while:
格式:

while conditiondo commanddone

无限循环:

while :do commanddone

12.函数
定义格式:

函数名(){xxxxxx........retrun xxxxx...}

例如:

sayHi(){ echo "hello 1906" retrun "dddd"}//调用sayHi

有参数:

funWithParam(){ echo "第一个参数为 $1 " echo "第二个参数为 $2 " echo "第十个参数为 $10 " echo "第十个参数为 ${10} " echo "第十一个参数为 ${11} " echo "参数总数有 $# 个" echo "作为一个字符串输出所有参数 $* "}//调用funWithParam 1 2 3 4 5 6 7 8 9 34 73

注意:$ 10 不能获取第十个参数,获取第十个参数需要$ {10}。当n>=10时,需要使用$ {n}来获取参数。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。