Shell脚本可以自动化的执行一连串的指令或者程序,可以极大的提高我们的工作时的效率。下面我将举例一些常见的Shell脚本语法。
Shell脚本的构成
Shell脚本通常以 .sh 为后缀,其与windows的批处理一样,本质是一个文件。
在编写Shell脚本的时候,需要在文件的第一行注明需要使用的解析器,比如:
#!/bin/bash
Shell脚本的运行
想要运行Shell脚本,可以使用如下三种语句:
./shell_name.sh # 按照脚本中#!指定的解析器进行解析 bash shell_name.sh # 指定优先的解析器为bash .shell_name.sh # 直接使用默认的解析器 shell_name
Shell脚本的语法
注释
Shell脚本中的单行注释由# 开头
STDOUT
在Shell脚本中使用标准化输出,可以使用echo指令
变量
在Shell脚本中,定义变量的方式如下
变量名=值
其中,值得注意的是,变量名,= 以及变量的值之间不能含有空格,否则会造成解析错误。
其变量也具备如下的性质:变量没有类型之分,所有变量都默认为 String 类型。因此 myage=18 和 myage=”18″ 在作用上是没有什么区别的。
如果想使用所定义的变量,可以参考以下两种方式:
- $变量名
- ${变量名}
这两种方式的区别为,使用花括号 {} 可以界定变量名的范围。当程序在解析的时候,所解析的变量名只会是 {} 里面的部分。
拓展计算
在Shell脚本中,想要进行一定的数学运算,就可以使用 (( )) 运算符,该运算符中可以使用任何符合C语言标准的语句。
需要注意的是,Shell只能处理整形数据的运算,所以在Shell中进行的浮点数运算是一String的形式来进行的。
多语句同行
如果要把多条语句放在同一行,则每个语句都应该由 ; 来分开。
一语句多行
如果要把一条语句写在多行,则需要在换行处用 \ 来分割。
for循环
其基本格式为
# 方式1
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
# 方式2
for((i=1;i<=5;i++))
do
{
echo $i
}
done
if 语句
其基本格式为
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
并行执行
想要利用好多线程硬件,提高执行效率,则可以使用并行执行的运算符:&
# 并行执行三个py脚本 python test1.py& python test2.py& python test3.py
等待
若一个进程依赖于另一个进程的结果,则可以用等待语句:wait
# 执行完test1之后再执行test2 python test1.py wait python test2.p
暂停
sleep命令可以将一个命令暂停一段时间
# 运行test1后等待10s再运行test2 python test1.py sleep 10 python test2.py