问题背景
有两个写好的脚本,第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
运行效果如下:


