我使用Linux 2.6.x.x.x
使用“回声”通过管道传递一个值
SUSE Linux Enterprise Server 10 (i586)
我想知道的是如何通过管道将命令传递值的问题?
在所有其他操作系统,包括DOS
,我可以使用:
echo <value> | <command>
但在Linux
,这似乎并没有工作。
例如,我想一个Database Name
传递到Oracle
命令,设置Environment Variables
基于它从oratab
文件中读取Database
。
通常情况下,该命令会为运行:
. oraenv (to source environment variable settings)
然后,它会提示你输入数据库名称。
但是,如果我运行:echo <some_db_name> | . oraenv
,它的工作原理,而不会提示,并在每个平台上的脚本很有除了这个版本的Linux。
任何想法?
$ <> /home/oracle>echo $SHELL
/bin/bash
“这似乎不工作” 是不是一个很好的问题描述。出了什么问题? –
你的'oraenv'运行在一个子shell中。子shell中的环境无法传递到主进程。 –
请参阅http://stackoverflow.com/a/12145810/841108这是一个非常类似问题的答案 –