需要用户输入时,跳至shell脚本中的下一个命令

时间:2013-09-23 21:09:39

标签: linux bash shell unix sh

我有以下情况。我有一个自动生成的shell脚本,我想运行它。脚本的一般格式如下所示:

 #!/bin/sh

 command_1 #something like mkdir dir1 or chmod -R 775 dir1, you get the idea 
 command_2
 ...
 ...
 command_n

就像我说的那样,脚本会自动生成,我对脚本中编写的命令没有多少控制权(脚本的目的是用它来进行模糊测试,所以这很有意义)。问题是某些命令需要某种用户输入(例如“chfs --some arguments”有时会提示我输入root密码),因此在得到正确的输入之前,脚本不会传递给下一个命令。

所以,我的问题是:有没有办法在这样的脚本中遇到需要用户输入的命令,以便脚本完成并执行所有其他命令?任何想法都非常感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用expect脚本解决此问题,例如

    spawn /bin/bash yourscipt.sh
    expect "password:"
    # Send the password, and then wait for a shell prompt.
    send "xxxxx\r"

这里XXXX是你的密码。

答案 1 :(得分:1)

让我们说您的脚本需要用户以交互方式输入选择。 用户按y然后再次询问用户名。 用户输入他的名字,然后脚本继续。

输入选项(y / n):_

输入姓名:_

因此,您可以通过准备一个输入文件来传递输入,并在每行中写入选项。

输入文件的内容:

ý

Inderdeep

将脚本运行为:cat inputfile | ./script