AI智能
改变未来

shell脚本基本语法

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

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

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

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

执行文件。这里需要特殊说明一下./ 只是运行shell脚本的一种方法,还可以使用 /bin/bash lxh.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

#!/bin/basha=10b=10if [ $a -eq $b ];thenecho \"两个数相等\"fi

8.if else

#!/bin/bashstring=\"hello\"string1=\"HELLO\"if test $string = $string1thenecho \"两个字符串一样\"elseecho \"两个字符串不一样\"fi

9.if else-if else语法

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

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

数值类型:

代码:

num1=100num2=100if test $[num1] -eq $[num2]thenecho \'两个数相等!\'elseecho \'两个数不相等!\'fi

字符串类型:

代码:

num1=\"piaolaoshi\"num2=\"PIAOLAOSHI\"if test $num1 = $num2thenecho \'两个字符串相等!\'elseecho \'两个字符串不相等!\'fi

文件类型:

if test -e ./bashthenecho \'文件已存在!\'elseecho \'文件不存在!\'fi

11.循坏语句

for:
格式:

for var in item1 item2 ... itemNdocommand1command2...commandNdone

while:
格式:

while conditiondocommanddone

无限循环:

while :docommanddone

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}来获取参数。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » shell脚本基本语法