有没有一种方法可以在bash脚本中使用需要密码的命令



我正在尝试创建一个脚本,将我的SSH私钥添加到SSH代理。

#!/bin/bash
ssh-agent /bin/sh 
ssh-add passphrase_encrypted_key

如果我从命令行运行这些命令,系统会在ssh-add命令之后提示我输入密码短语。如果我将它们作为脚本运行,则不会提示我输入密码短语。

我知道这与子处理和/或正在创建的子shell有关,但我就是找不到能为我指明正确方向的信息。

我尝试过命令;集合-m";,exec,将命令放在左括号中,也许还有其他一些我现在想不出来的命令。

对于我收到的任何回复,一个很好的参考资料,了解bash脚本如何使用子进程等的基本原理,将非常有帮助。

仅供参考,ssh代理在我使用的机器上默认不会启动,而且我不是管理员。

经过更多的研究,我发现我需要在脚本中添加以下行:

eval "$(ssh-agent -s)"

我不明白为什么我需要$,因为我认为这只是为了引用shell脚本中定义的变量,所以我还有更多的研究要做。

我最后的基本脚本看起来像:

#!/bin/bash
eval "$(ssh-agent -s)" 
ssh-add passphrase_encrypted_key

在脚本执行将密钥添加到代理的行之后,系统会按预期提示我输入密码短语。

感谢所有作出回应的人。

最新更新