小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
上篇介绍了shell,也有了大概的了解,现在开始进入shell脚本深入的学习。
需求
习惯了开发或者测试,在许多时候都不喜欢硬编码,可能只在调试的时候,所以开始shell编程,为了让脚本更加灵活,那么动态传递参数是非常有必要的。
如何向shell传递参数
两种方式,两种用法。
执行脚本带入参数和linux交互传入参数
- [root@localhost /]# sh test.sh param1 param2
第一种用法,是在shell脚本中使用
0$1$2等
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条件判断。




近期评论