下面的bash脚本有问题:
#!/bin/bash
myPassword="foobar"
su - postgres <<-'EOF'
echo $myPassword # nil
EOF
echo $myPassword # foobar
如何从
$myPassword
用户会话中访问或管道postgres
的内容?不管有没有成功都试过。
最佳答案
你用的是遗传标记。所以没有替代发生。如果要在块中替换变量,请删除该块周围的引号。见Heredocs And Herestrings。
你也可以保留你所拥有的,但是使用'EOF'
的-p
(或-m
或--preserve-environment
)选项,这可能对你更好。
(我确信没有必要提醒您在脚本中保存密码是不安全的。而且可以使用足够的权限检查进程的环境,因此它也不是一个存放密码的好地方。)