【发布时间】:2013-12-16 14:42:06
【问题描述】:
我正在对服务器执行 remsh 并在 for 循环中读取文件的内容。文件包含目录的路径,其名称包含环境变量。
文件内容如下。 ENV_VARIABLE 包含某个目录的路径。
$ENV_VARIABLE/somepath
我正在运行如下命令。
remsh server -l user ' . ./.profile;echo $ENV_VARIABLE for i in `cat filename do; echo $i;done'
执行上述命令时,会产生以下输出。
VALUE_OF_ENV_VARIABLE/somepath
$ENV_VARIABLE/somepath
为什么从文件中读取的 ENV_VARIABLE 没有被它的值替换,而相同的 ENV_VARIABLE 被它的值替换为 'echo' ?
如何从文件中读取 ENV_VARIABLE 的值?
【问题讨论】:
-
远程 ./.profile 中是否为 ENV_VARIABLE?或在调用服务器之一(即本地)?如果远程:
remsh server -l user '. ./.profile ; echo "ENV_VARIABLE=$ENV_VARIABLE" ; for i in $(cat filename) ; do echo "$i" ; done'。如果在本地:remsh server -l user ". ./.profile ; echo 'ENV_VARIABLE=$ENV_VARIABLE' ; for i in $(cat filename) ; do echo \"\$i\" ; done"(我假设“文件名”和“.profile”都是远程的) -
是的,它是在远程服务器上定义的,我可以通过运行 remsh server -l user ' 使用 echo $ENV_VARIABLE 打印它的值。 ./.profile;echo $ENV_VARIABLE'。但是当我尝试通过从文件中读取它来打印它的值时,它给了我 ENV_VARIABLE 而不是它的值。
标签: unix environment-variables