AI智能
改变未来

够用的 shell 脚本

shell 脚本随处可见,甚至有些项目就是由 shell 脚本组成的

如果你想使用 shell 脚本自动化执行流程,或者看懂 shell 脚本,需要哪些知识呢

这里简单讲几个点

0 shell 适用于什么情况?

  1. 小工具
  2. 包装脚本编译代码
  3. 调用其他高级语言(调度)
  4. 少量的数据处理

1 获得参数

$ example_command  1 2 3

在执行命令后面加了三个参数

在程序中可以这样获取

# 命令本身,即: example_commandecho $0# 1echo $1# 2echo $2# 3echo $3

  

如果是一个 shell 函数要获取参数呢?

也是类似!

function_call () {echo $1}function_call \"call function\"  

2 如何模块化

借助 source 命令

# a.shfunction function_a() {echo \'a\'
# 函数内部变量尽量使用 local 关键字,作用域能够限制在当前函数中
local b=1}# b.shsource a.shfunction_a

3 提示是否继续

while true; doread -r -p \"Step $preStep done! Next Step is $nextStep. Are You Sure Continue? [Y/N] \" inputcase $input in[yY][eE][sS] | [yY])echo \"Continue\"break;;[nN][oO] | [nN])echo \"opt exit, done.\"exit 1;;*)echo \"Invalid input...\";;esacdone

  

如果不想输入错误一直提示,可以去掉 while 循环

4 调试 shell 脚本

  • 多加 echo ,输出有用信息
  • 使用 set -x 命令

set -x 命令输出示例:

# a.shset -xa=\'aaaaaaaa\'echo $@echo \"$@\"echo $*echo \"$*\"

5 计算

有几种方式可以在 shell 中计算

但是这里只说一种

那就是双括号的形式

# a.sh# 双括号中不能使用 $n 表示变量((n = 10 / 3))echo $n

  

6 shell 判断

shell 的 test 提供了很多比较实用的比较方式

比如:

-e: 文件存在-f: 文件存在并且是普通文件

停,如果全列出来就没意思了,只能是授之以鱼

通过命令 man test 可以看到更详细的判断语法

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 够用的 shell 脚本