【发布时间】:2013-12-12 02:18:55
【问题描述】:
我在 BASH 脚本中有以下几行:
ACTIONS_COMMAND="php -f $BASEDIR/scripts/activities.php < \"$SRC_DIR/%s/AndroidManifest.xml\""
printf -v ACTIONS_CMD "$ACTIONS_COMMAND" $FOLDER
$ACTIONS_CMD
这在一个循环中运行,以对多个 Android 应用程序执行相同的操作。
当我回显$ACTIONS_CMD 并复制并粘贴命令时,它会产生正确的输出,但脚本本身会启动PHP,但不会复制STDIN。我知道这是因为 PHP 挂起,直到我在键盘上按下 Ctrl-D 然后它抱怨没有输入。
我尝试将 PHP 命令切换到
ACTIONS_COMMAND="cat \"$SRC_DIR/%s/AndroidManifest.xml\" | php -f $BASEDIR/scripts/activities.php"
当第一个文件名用引号引起来时(我认为应该是为了安全起见),我得到 p>
cat: "apps/app_name/AndroidManifest.xml": No such file or directory
cat: |: No such file or directory
cat: php: No such file or directory
cat: -f: No such file or directory
<?php
... REST OF PHP SCRIPT ...
没有引号,它只是输出到终端窗口。
如果重要的话,那就是GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)。
【问题讨论】:
-
在最终构造的命令之前添加一个
echo,以查看生成的内容以及可能出现的任何错误。 -
@MattWilliamson 我这样做了,结果命令在终端中手动运行良好。