bash 跨脚本交互
- 运维笔记
- 2020-11-02
- 104热度
- 0评论
问题背景
有两个写好的脚本,第1个脚本的某个输出,是第2个脚本的输入。由于第一个脚本输出的内容较多,且包含大量说明文字,不方便通过管道直接连接起来。
考虑封装一段客户端脚本,先调用脚本1,再调用脚本2,最后给出脚本2的输出。
这就涉及 bash 的跨脚本交互问题。
解决方案
其实很简单,使用 source 命令。
实例
现在有两个脚本,第二个脚本的输入,是第一个脚本的输出。
s1.sh:
#!/bin/bash name="Lily" echo 'name is '$name
s2.sh:
#!/bin/bash if (($# < 1)) then echo "Need name, like 'Tom'" exit 1 fi origin_name=$1 name="Super-$origin_name" echo "Hello, $name!"
运行效果如下:
我们来编写一段测试脚本:
test.sh:
#!/bin/bash source ./s1.sh >> /dev/null echo 'before:' $name source ./s2.sh $name >> /dev/null echo 'after:' $name
运行效果如下: