Shell脚本教程-[1]

sancaiodm Shell/Ubuntu系统 2021-11-27 884 0

shell 命令的基本格式:command [选项] [参数]     //[]可选的,可有可无的

[选项]:command命令的[选项]可以执行 command --help 查看

[参数]:  参数是命令的操作对象,可以是文件,目录,用户和进程等都可以作为参数被命令操作,如果执行中的命令没有带参数,则是此命令有一个默认参数



使用一个定义过的变量只要在变量名前面加美元符号即可,

int user = androidodm.com

变量名外面的花括号是可选的加不加随便你自己,但为方便阅读建议加{},加花括号是为了解释器识别变量的边界

$user = ${user}

unset username   //删除变量

command1;command2...

--不管command1命令是否执行成功,command2命令都执行。

command1&command2...

--command1命令和command2命令同时执行

command1&&command2...

--只在command1命令执行后,才执行command2命令。

如:

如果白天工作下载或是编译代码太浪费时间可以,将任何放在指定时间执行命令自动编译:

sleep 7h && make -j8 2>&1 |tee build-log.txt


单行注释   以 # 开头的行就是注释,会被解释器忽略。

传递参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。

完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。如 val=`expr 2 + 2`

= 放在别的地方是赋值,放在if [ ] 里就是字符串等于,shell里面没有==的,那是c语言的等于

逻辑判断

if 判断语句;then

   command

fi


if 判断语句

then

    command

else

    command

fi


条件

If  [  $ANS  ]     等价于  if [ -n $ANS ]   //如果字符串变量非空(then) , 空(else)

echo "input your choice:"

read ANS


if [ $ANS ] 

then

echo no empty

else

echo empth

fi 

传统if 从句子——以条件表达式作为 if条件

if [ 条件表达式 ]

then

 command

 command

 command

else

 command

 command

fi


文件表达式

if [ -f  file ]    如果文件存在

if [ -d ...   ]    如果目录存在

if [ -s file  ]    如果文件存在且非空 

if [ -r file  ]    如果文件存在且可读

if [ -w file  ]    如果文件存在且可写

if [ -x file  ]    如果文件存在且可执行   


整数变量表达式

判断数值大小使用((k>100)),还可以使用[],但不能使用>、<、=这样的符号了,要使用-lt(小于)、-gt(大于)、-le(小于或等于)、-ge(大于或等于)、-eq(等于)、-ne(不等于)

if [ int1 -eq int2 ]    如果int1等于int2   

if [ int1 -ne int2 ]    如果不等于    

if [ int1 -ge int2 ]       如果>=

if [ int1 -gt int2 ]       如果>

if [ int1 -le int2 ]       如果<=

if [ int1 -lt int2 ]       如果<

   

字符串变量表达式

If  [ $a = $b ]           如果string1等于string2  ,字符串允许使用赋值号做等号

if  [ $string1 !=  $string2 ]   如果string1不等于string2       

if  [ -n $string  ]             如果string 非空(非0),返回0(true)  

if  [ -z $string  ]             如果string 为空

if  [ $sting ]                  如果string 非空,返回0 (和-n类似)    



评论