0

我有一个声明一些变量的 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"
4

2 回答 2

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产生它。

于 2013-09-08T15:03:56.990 回答
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
于 2013-09-08T14:32:42.027 回答