够用的 shell 脚本
shell 脚本随处可见,甚至有些项目就是由 shell 脚本组成的
如果你想使用 shell 脚本自动化执行流程,或者看懂 shell 脚本,需要哪些知识呢
这里简单讲几个点
0 shell 适用于什么情况?
- 小工具
- 包装脚本编译代码
- 调用其他高级语言(调度)
- 少量的数据处理
1 获得参数
$ example_command 1 2 3
在执行命令后面加了三个参数
在程序中可以这样获取
# 命令本身,即: example_command echo $0 # 1 echo $1 # 2 echo $2 # 3 echo $3
如果是一个 shell 函数要获取参数呢?
也是类似!
function_call () { echo $1 } function_call "call function"
2 如何模块化
借助 source 命令
# a.sh function function_a() { echo 'a'
# 函数内部变量尽量使用 local 关键字,作用域能够限制在当前函数中
local b=1 } # b.sh source a.sh function_a
3 提示是否继续
while true; do read -r -p "Step $preStep done! Next Step is $nextStep. Are You Sure Continue? [Y/N] " input case $input in [yY][eE][sS] | [yY]) echo "Continue" break ;; [nN][oO] | [nN]) echo "opt exit, done." exit 1 ;; *) echo "Invalid input..." ;; esac done
如果不想输入错误一直提示,可以去掉 while 循环
4 调试 shell 脚本
- 多加 echo ,输出有用信息
- 使用 set -x 命令
set -x 命令输出示例:
# a.sh set -x a='aaaaaaaa' echo $@ echo "$@" echo $* echo "$*"
5 计算
有几种方式可以在 shell 中计算
但是这里只说一种
那就是双括号的形式
# a.sh # 双括号中不能使用 $n 表示变量 ((n = 10 / 3)) echo $n
6 shell 判断
shell 的 test 提供了很多比较实用的比较方式
比如:
-e: 文件存在 -f: 文件存在并且是普通文件
停,如果全列出来就没意思了,只能是授之以鱼
通过命令 man test 可以看到更详细的判断语法
本文来自博客园,作者:吴丹阳-V,转载请注明原文链接:https://www.cnblogs.com/wudanyang/p/13823722.html