在另一个shell脚本中调用shell脚本(命令行工具)

时间:2014-09-10 17:57:02

标签: linux bash shell

我正在使用一个名为Droidbox的工具进行实验。 该工具有一个shell脚本 droidbox.sh ,我可以通过终端调用它。

droidbox.sh采用一个参数,即apk的路径

用法:./ droidbox.sh APK

我想通过shell脚本调用 droidbox.sh

我写了一个像

这样的shell脚本
#!/bin/bash
ARG1="/home/xxx/a.apk"
/home/xxx/DroidBox_4.1.1/droidbox.sh "$ARG1"

我收到的错误是

python: can't open file 'scripts/droidbox.py': [Errno 2] No such file or directory

有人能指出我做错了吗?

2 个答案:

答案 0 :(得分:2)

您的错误消息不是来自您的脚本,而是来自被调用的消息。

听起来droidbox.sh脚本不是很聪明,要求您在调用之前设置当前的工作目录。

我通常会使用更多变量,所以你最好看看属于哪个:

#!/bin/sh
set -e
BASEDIR="/home/xxx" 
DROIDDIR="$BASEDIR/DrroidBox_4.1.1"
APKFILE="$BASEDIR/a.apk"
cd "$DROIDDIR"
"$DROIDDIR/droidbox.sh" "$APKFILE"

如果你不使用set -e,你最好将需要一起成功的命令组合起来:

cd "$DROIDDIR" && "$DROIDDIR/droidbox.sh" "$APKFILE"

否则,当缺少目录并且所有后续命令在错误的目录中执行时,cd可能会失败。

答案 1 :(得分:1)

此错误是因为您在不同于包含" scripts / droidbox.py"的文件夹的文件夹中运行脚本。文件。您可以通过以下方式解决此问题:

  1. 移动"脚本/"您使用" mv / path / to / scripts /。"
  2. 运行此脚本的目录的文件夹
  3. 将客户脚本移至包含scripts / droidbox.py的文件夹并从那里运行脚本