我有一个shell脚本声明了一些变量:
export X=1
export Y=2
我希望能够做到这样的事情:
. ./path/to/script | command_that_has_access_to_X_and_Y
基本上,以某种方式获取脚本,以便管道后面的命令可以访问这些变量。这样的事情有可能吗?
编辑: 我要运行的其中一个命令是pg_dump,凭据在shell文件中:
基本上我正试图运行它:
bash -c "pg_dump \$PRODUCTION_DB --password \$PRODUCTION_PASSWORD --user \$PRODUCTION_USERNAME --host \$PRODUCTION_HOST > #{backup_name}.sql"
答案 0 :(得分:2)
无需使用管道。假设您在第一个脚本中有export
个命令,那么这些变量将可用于第二个脚本。
. ./path/to/script
command_that_has_access_to_X_and_Y
管道只是将一个脚本的标准输入连接到另一个脚本的标准输出的工具。它是使用临时文件的有效替代方案; x | y
与
x > tmp.txt
y < tmp.txt
除了操作系统处理从x
到y
传递文本的详细信息,以便两者可以同时运行,y
接收输入x
会产生它
答案 1 :(得分:1)
您可以通过echo发送:
左边的脚本:
#!/bin/bash
X='Something X'
Y='Something Y'
echo "$X"
echo "$Y"
右边的命令:
... | bash -c "read -r X; read -r Y; echo \"\$X : \$Y\""
产地:
Something X : Something Y