您当前的位置: 首页 > 

风间琉璃•

暂无认证

  • 2浏览

    0关注

    337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

shlle脚本

风间琉璃• 发布时间:2021-08-16 21:48:10 ,浏览量:2

shell脚本类似windows的批处理文件,shell脚本就是将连续执行的命令写成一个文件。

(1)shell脚本写法 shell脚本是个纯文本文件,命令一行一行的开始执行, 扩展名为.sh 文件的首行必须为:

#!/bin/bash      表示使用bash

注意:在shell执行时有两种方法 (1) sh + 文件名

(2)需要给文件赋予 可执行的权限(x) 赋予权限: chmod 777 文件名 (变成可执行文件) 执行文件: ./+文件名

(2)shell编写的基本步骤 建立shell文件 赋予shell文件可执行程序权限(使用chmod命令修改权限)/ sh+文件名 执行shell文件(直接运行赋予权限后的二进制文件)

(2)基础语法

(1)shell变量 一般shell的变量赋值的时候不用带“ ” , 而 使 用 或 者 输 出 的 时 候 要 带 “ ”,而使用或者输出的时候要带“ ”,而使用或者输出的时候要带“” 在这里插入图片描述

注意: 1.变量赋值,变量使用的时候不能有空格,否则会被解析成命令,报错无此命令

2.在shell脚本中只有整型和字符串

(3)shell字符串 在shell中字符串是shell编程中最常用最有用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。

使用单引号的不足: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

使用双引号的优势: 可以在双引号中使用变量 可以在双引号中使用转移字符

字符串操作: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

(4)shell数组 在bash下,仅仅支持一维数组,并且没有限定数组的大小,不支持多维数组。数组元素的下标由 0 开始编号(字符串也是)。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。

在这里插入图片描述

(1)用小括号( )来表示数组,数组元素之间用空格来分隔
赋值号=两边不能有空格,必须紧挨着数组名和数组元素

(2)用小括号将变量值括起来,同时采用键值对的形式赋值

(3)分别定义数组变量的方法来定义
最后一行 表示输出全部数组元素(@表示全部)

(5)shell传递参数 在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,$0表示本身文件名,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推


echo "传递参数实例!";
echo "执行的文件名:$0";    //本身文件名
echo "第一个参数为:$1";    //第一个参数
echo "第二个参数为:$2";
echo "第三个参数为:$3";
执行脚本如下
chmod 777 test.sh
./test.sh 1 2 3   //这里是传参数 1 2 3 

(6)shell运算符种类

1.算术运算符 需要结合 expr

expr运算规则注意点:
表达式和运算符之间必须要有空格,例如 1+2 是不对的,必须写成 1 + 2
完整的表达式要被 两个" ` "包含(在 Esc 键下边那个键)

#!/bin/bash

res=`expr 1 + 2`
echo "两数之和为 : $res"

其余的四则运算和c类似。 注意: 乘号(*)前边必须加反斜杠()才能实现乘法运算

a=2
b=1
`expr $a \* $b` 结果为 2

在这里插入图片描述 在这里插入图片描述

2.关系运算符 a=1 b=2 在这里插入图片描述 注意:运算符和数之间必须要用空格隔开

3.布尔运算符 在这里插入图片描述

4.逻辑运算符

&&(命令执行控制)

语法格式如下: command1 && command2 [&& command3 …]

1.命令之间使用 && 连接,实现逻辑与的功能。 2.只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。 3.只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。

||(命令执行控制)

语法格式如下: command1 || command2 [|| command3 …]

1.命令之间使用 || 连接,实现逻辑或的功能。 2.只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。 3.只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。

5.字符串运算符 a=“abc” b=“def” 在这里插入图片描述

6.文件测试运算符 在这里插入图片描述

(7)shell命令

(1)echo echo命令在shell中用于字符串的输出

格式:echo string

(2)printf 与c类似,只是不支持换行,

格式:printf
参数说明:
format-string:格式控制字符串
arguments:参数列表 format-string [arguments...]

echo "hello,word"   printf "hello,word\n"

(3)read read是shell脚本用来获取交互窗口传输参数 read命令用于从标准输入读取数值。

格式: 
read -p “提示语” -n [字符个数] -t [等待时间s] -s value
-p:提示语
-n:待输入字符个数,一旦达到个数,不用回车就继续运行
-t:阻塞等待参数输入的时间,单位s;超时未输入,则结算等待继续运行
value:变量,用来接收输入的参数
-s:代表不回显输入的参数,常用于输入密码

#!/bin/bash
#该脚本用于屏幕输入name,10s内输入则打印输入的name,超时未输入则打印timeout
if read -p "Enter your name:"  -t 10 name
then
        echo "$name"
else
        echo "timeout"
fi

(4)test test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试 在这里插入图片描述

#!/bin/bash
a=1
b=2
if test $[a] -eq $[b]
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi

//两个数不相等!

(8)条件分支与循环

1.if else条件

格式为:if - then - fi;

调用格式:
if condition
then
    command1 
    command2
    ...
    commandN 
fi
# 写成单行
if condition;then command1; command2;fi




if -else的情况
if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi




在多条件条件情况

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

2.case语句

格式:
case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

注意:
取值后面需要加上in
每一模式必须以右括号结束
每个模式结束后使用;;符号结尾
如果没有找到对应的模式。以*结尾,并跳出case
case需要搭配esac结尾,与C语言中的switch … case语句类似

case中想要跳出循环有两个命令:break和continu
break命令:允许跳出所有循环(中止执行后面所有的循环)
continu :跳出本次循坏

在这里插入图片描述

在这里插入图片描述

3.for循环 与python的有点类似

格式:
for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

在这里插入图片描述 在这里插入图片描述

4.while while循环用于不断执行一系列命令,也用于从输入文件中读取数据,调用格式


while condition
do
    command
done
#!/bin/bash
num=1
while(( $num            
关注
打赏
1665385461
查看更多评论
0.0463s