文章整体内容
本篇文章只是快速学习了一些语法,如果更深入推荐2个比较权威的书籍
《Linux命令行与shell脚本大全》
《Linux shell脚本攻略》
百度网盘
链接:https://pan.baidu.com/s/1SzXqhWRceC9aSyRMy1soOA
提取码:d23w
Hello World
新建一个demo.sh
vim demo.sh
输入
并且加入权限
chmod 777 demo.sh
运行
./demo.sh
会打印出结果
其中我们需要注意:
- shell脚本通常sharp-bang起始:
#!/bin/bash
-
bash将以#符号开头的行视为注释。
-
echo 为输出语法 后面加入要输出的内容。不使用双引号也可以得到同样的输出结果。双引号允许shell解释字符串中出现的特殊字符。单引号不会对其做任何解释。
-
运行 Shell 脚本有两种方法:
- 作为可执行程序,上面的方法。
- 作为解释器参数
/bin/bash demo.sh
声明变量
局部变量
打印结果
注意:
- 变量赋值不能有空格
系统环境变量
输入
echo $PWD
则会显示当前系统的路径
注意:
- 执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。PWD需要大写
删除变量
使用 unset 命令可以删除变量。语法:
unset variable_name
变量被删除后不能再次使用;unset 命令不能删除只读变量。
输入参数
输入
打印时输入
./demo.sh hello1 hello2
注:
- 输入了hello1 hello2. 所以在控制台中就打印了hello1,hello2.
- 更多的实用命令如下表格
形式 | 输入参数 |
---|---|
$0 | 当前程序的名称 |
$n | 程序的输入参数 n= 1第一个参数 n2 第二个参数 |
$* | 所有的输入的参数 |
$# | 输入参数的个数 |
$? | 命令行的状态 一般返回0 代表成功 |
循环语句for
for 变量 in 字符串
do
语句1
done
示例打印数字
系统环境变量打印1到15
seq 1 15
shell脚本打印
打印
注意:
- ·seq 1 15·
中的引号是数字一左边的反引号,不是正常的单引号。
循环语句While
打印1加到100
打印结果
中间太长我就不截了
注意:
- shell中的加减乘除都是用 expr来表示的
例如加法
`expr $a + $b`
除法
`expr $b / $a`
而且注意空格:等式左右两边是不能有空格的。而表达式中要有空格。
反引号(1左边的是反引号)。
while((i<100))
的改写
我们可以将 while那块的表达式进行改写。 将小于号变成 -lt 。 同时加上中括号。 注意空格。
while读文件
read命令可以读取。 通过echo $line将文件取出。
我们建立一个text文件
用shell脚本读取文件
读取结果
if语句
格式
if语句
if condition
then
command1
command2
...
commandN
fi
if else语句
if condition
then
command1
command2
...
commandN
else
command
fi
注意:
if()后面没有{} 只需要;
语句一定要有tab键输入,不能是空格。空格在shell中不能随便写,是一种特殊的予以代表分割。
例子
输出:
运算符
算数运算符
运算符 | 说明 | 举例 |
---|---|---|
+ | 加法 | expr $a + $b 结果为 30 |
- | 减法 | expr $a - $b 结果为 -10 |
* | 乘法 | expr $a \* $b 结果为 200 |
/ | 除法 | expr $b / $a 结果为 2 |
% | 取余 | expr $b % $a 结果为 0。 |
= | 赋值 | a=$b 将把变量 b 的值赋给 a |
== | 相等。用于比较两个数字,相同则返回 true | [ $a == $b ] 返回 false |
!= | 不相等。用于比较两个数字,不相同则返回 true | [ $a != $b ] 返回 true |
注意:条件表达式要放在方括号之间,并且要有空格,例如: [
b] 是错误的,必须写成 [ $a == $b ]
乘号(*)前边必须加反斜杠()才能实现乘法运算
算数运算的方式
- 使用
$(())
- 使用
$[]
- 使用let
- 使用expr
关系运算符
布尔运算符
逻辑运算符
字符串运算符
文件测试运算符
以上来自
菜鸟教程Shell
重定向
重定向方式
<
输入重定向>
输出重定向
第一种<
输入重定向
将 text输入到屏幕
第二种输出重定向
函数
- shell中的函数和大多数的编程语言函数一样
- 将相似的任务或代码封装到函数中,供其他地方调用
name()
{
command;
command2;
}
[ function ] funname [()]
{
action;
[return int;]
}
写一个函数
打印结果:
注意:
- test是运行函数,在函数下面写,顺序执行的。
参数传递
参数传递直接在test后面添加即可
打印结果