初学Shell脚本(二)

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

上篇介绍了shell,也有了大概的了解,现在开始进入shell脚本深入的学习。

需求

习惯了开发或者测试,在许多时候都不喜欢硬编码,可能只在调试的时候,所以开始shell编程,为了让脚本更加灵活,那么动态传递参数是非常有必要的。

如何向shell传递参数

两种方式,两种用法。
执行脚本带入参数和linux交互传入参数

  • [root@localhost /]# sh test.sh param1 param2

第一种用法,是在shell脚本中使用

美元符号引用参数,美元符号引用参数,

0$1$2等

0是脚本本身,0 是脚本本身,

1 才是脚本后面的第一个参数,以此类推

[root@localhost /]# vim test.sh
#!/bin/bash

echo "这是执行脚本带入的参数:" 
echo "$0" 
echo "$1" 
echo "$2"

[root@localhost /]# sh test.sh  param1 param2
# 结果输出:
test.sh
param1
param2
复制代码
  • linux系统交互,read方式
[root@localhost /]# vim test.sh

read -p "一行3个参数,请用空格隔开:" app home name
echo "这是脚本交互指定的参数:" 
echo "$app" 
echo "$home" 
echo "$name"

# 结果输出
[root@localhost /]# sh test.sh
一行3个参数,请用空格隔开: param1 param2 param3

这是脚本交互指定的参数:
param1 
param2 
param3
复制代码

扩展

实际编程中,除了顺序读取,那么流程控制显得尤为重要

  • shell也支持if条件判断和for、while、switch...case...流程控制;它的格式如下:
#!/bin/bash

if condition1
then
    command1
    command2
    ......
    commandN
elif condition2
then
    command1
    command2
    ...
    commandN
else
    command1
    command2
    ...
    commandN
fi
复制代码

总结

从上面的格式可以看出shell没有结束符号,这类同python,它也不见得有缩进,这又异于python; 需要注意的是,每一个if条件之后要执行command,都必须then,最后以fi结束if条件判断。