2014-09-10 235 views
0

我正在使用名爲Droidbox的工具進行實驗。 該工具有一個shell腳本droidbox.sh我可以通過終端調用。在另一個shell腳本中調用一個shell腳本(命令行工具)

droidbox.sh採取APK的一個參數即路徑

用法:./droidbox.sh APK

我想通過一個shell腳本調用droidbox.sh

我寫了像

#!/bin/bash 
ARG1="/home/xxx/a.apk" 
/home/xxx/DroidBox_4.1.1/droidbox.sh "$ARG1" 

我收到錯誤,說一個shell腳本

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

有人能指出我究竟做錯了什麼?

+1

'droidbox.sh'正期望從'DroidBox_4.1.1'目錄運行(這大概就是你手動運行它的地方)。當您運行該腳本時,它無法在當前目錄中找到它所期望的'scripts/droidbox.py'文件。這是一個寫得不好的腳本(不是你的,'droidbox.sh')。 – 2014-09-10 17:59:44

+0

如果您在執行腳本的目錄中運行「ls」,您是否看到「scripts/droidbox.py」文件夾/文件? – tim5046 2014-09-10 18:00:16

+0

感謝它的工作。 – vij 2014-09-10 18:05:23

回答

1

這個錯誤是因爲你在一個不同於放置你的「scripts/droidbox.py」文件的文件夾的文件夾中運行腳本。您可以通過以下方式修復此問題:

  1. 將「scripts /」文件夾移至使用「mv/path/to/scripts /」運行此腳本的目錄。
  2. 將您的客戶腳本包含腳本/ droidbox.py的文件夾,並從那裏
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可能會失敗,並且所有後續命令在錯誤的目錄中執行。

相關問題