2014-08-30 368 views
1

我正在编写一个包装shell脚本wrapper.sh来运行其他人拥有的其他一些已经可用的脚本,我无法触及这些脚本。如何通过shell脚本向提示输入值?

问题是,有一个脚本运行一些数据库特定活动 - db_perf_clean.sh。该脚本通常手动执行,并在运行时提示输入密码。我无法将密码作为参数提供给我,因此我无法修改该脚本。因此我知道db密码,我可以在wrapper.sh中提供。

请让我知道如何在wrapper.sh内运行db_perf_clean.sh脚本,就像在静音模式下一样。

回答

2

有时脚本会坚持从tty读取密码。通常,它会从标准输入读取。如果是这样,请尝试:

echo password | db_perf_clean.sh 

上面的缺点是密码将出现在ps中。为了避免这种情况,隐藏在一个文件中的密码,并使用该文件的标准输入:

db_perf_clean.sh <file_with_password 

如果你想命令保持沉默,你可以一次性输出:

db_perf_clean.sh <file_with_password >/dev/null 2>&1 

在bash,如相对于一般的外壳,可以稍微简化:

db_perf_clean.sh <file_with_password &>/dev/null 
+0

感谢它的工作 – dganesh2002 2014-08-30 02:07:38

0

我发现了一点不同的方法,而不是在文件中写入密码和工作太 - >

db_pass="somevalue" 
sh db_perf_clean.sh<<EOM 
$db_pass 
EOM