下面的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)选项,这可能对你更好。
(我确信没有必要提醒您在脚本中保存密码是不安全的。而且可以使用足够的权限检查进程的环境,因此它也不是一个存放密码的好地方。)

10-05 22:49