我希望这对一个大师来说是一个快速的问题。 我有以下命令,它在命令行中运行良好:
src/protected/yiic shell src/index.php <<< createmvp < /dev/tty
此命令执行yiic bash脚本并将参数shell和src / index.php传递给它。
第一个&lt;&lt;&lt;&lt;将参数createmvp传递给终端提示符,该提示符在yiic shell src / index.php自己运行时显示。
第二个&lt;然后允许std in返回到应用程序。
但是当我在bash脚本中运行它时
#!/bin/bash
src/protected/yiic shell src/index.php <<< createmvp < /dev/tty
该脚本不会将createmvp传递给shell。 如果我删除&lt; / dev / tty位通过createmvp工作,但后来重新捕获终端显然没有。我似乎没有做任何事情。
while(!isset($input))
{
$input = trim(fgets(STDIN));
if(!$input)
echo "$configVar can not be NULL";
}
关于如何通过命令行进行此操作的任何想法?
提前致谢
艾伦
答案 0 :(得分:2)
(echo createmvp; cat /dev/tty) | src/protected/yiic shell src/index.php
我认为<<< createmvp < /dev/tty
不起作用的原因是因为<<<
和<
都是指定标准来源的方法,你无法做到都。 <<<
将一个字符串作为参数并将其传递给stdin,而<
获取一个文件。
答案 1 :(得分:1)
我认为你应该使用eval:
#!/bin/bash
cmd="src/protected/yiic shell src/index.php <<< createmvp < /dev/tty"
eval $cmd
答案 2 :(得分:1)
要在yiic
处理exit
命令本身后立即退出脚本,退出时trap
可用于yiic
子shell:
# small addition to cpugeniusmv's answer
(echo createmvp; cat /dev/tty) |
(trap 'kill 0' EXIT; src/protected/yiic shell src/index.php)