0

我有以下情况。我有一个自动生成的 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 密码),因此脚本在获得正确输入之前不会传递给下一个命令。

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

4

2 回答 2

1

假设您的脚本要求用户以交互方式输入选项。用户按 y 然后再次询问用户名。用户输入他的名字,然后脚本继续。

输入选项(是/否):_

输入名字 :_

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

输入文件内容:

是的

深渊

并将脚本运行为: cat inputfile | 。/脚本

于 2013-10-17T04:33:17.197 回答
1

您可以使用expect脚本来解决这个问题,就像这样

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

这里 XXXX 是您的密码。

于 2013-09-23T21:24:19.233 回答