我有以下情况。我有一个自动生成的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密码),因此在得到正确的输入之前,脚本不会传递给下一个命令。
所以,我的问题是:有没有办法在这样的脚本中遇到需要用户输入的命令,以便脚本完成并执行所有其他命令?任何想法都非常感谢。
答案 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