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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?