

作者:Leon Wang, 现为中科院特别研究助理 (博士后),在 AI、数据科学和科学计算等方面相关的工程实践上积累了丰富的经验。编辑:王老湿
大家好,我们的
前面两篇文章已经为大家介绍了Linux的Shell命令相关的知识,我们已经可以在命令行下单独的完成一些操作。但在实际工作中,我们通常还需要利用这些命令,结合一些逻辑控制编写AI批处理脚本。
本篇文章就来介绍Shell脚本编程。因为bash是目前最常见的Shell环境,下文都将以bash为例进行介绍。
脚本基础
编写脚本文件
Shell脚本文件本质就是一个纯文本文件,只要把我们常用的txt文件的后缀名改成sh,甚至不改(只要你自己不混淆就可以)就可以作为脚本文件来用。一般,sh脚本应注意以下几点:shebang
符号:
#!/bin/bash
保存文件后,为方便脚本文件能直接和命令一样运行,需要执行chmod +x file
。shebang
的可执行权限的内容可以回顾专栏里的
变量
定义赋值
定义Shell变量的形式为:变量名=变量值。例如:
PATH1="/tmp"
这里,注意变量名不能以数字开头,中间不能有空格和标点符号,以及Shell里面的一些关键字。变量值可以通过一条命令的结果动态赋值,例如:
PATH1=$(pwd)
注意,pwd
是查看当前路径的命令,通过$()
的形式,把里面pwd
的结果直接赋值给PATH1
。
使用变量
Shell中需要用$变量名
的形式使用变量。结合前面所讲的定义赋值,我们可以使用一个已有变量的值,直接赋给另一个变量:
PATH1=$PWD
注意,$PWD
是系统维护的环境变量,和pwd
效果一致。
命令行参数
与很多命令行环境相似,Shell脚本需要对多个参数进行处理。我们编写脚本时,可以通过一些特殊的变量获取命令行参数。首先,我们先写一个脚本testpara.sh
,内容如下:
#!/bin/bash
param1=$1
param2=$2
echo "Running :$0"
echo "Parameter1: $param1"
echo "Parameter1: $param2"
当我们运行./testpara.sh p1 p2
后,显示结果如下:
Running:./testpara.sh
Parameter1: p1
Param