够用的 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

                
            
        
浙公网安备 33010602011771号