2015-05-11 273 views
0

我試圖運行一個腳本來安裝用戶指定的目錄中的某些文件。一旦用戶指定了目錄,我想將主文件傳輸到該目錄,以便它可以在那裏執行更多任務,然後最終完成刪除自身。bash腳本未能執行bash腳本

#prompt for directory in which to build project 
    read -p "Drag and drop the directory in which you'd like to build this project: " 

    echo "reply is $REPLY" 
    cp ./myScript.sh $REPLY 
    /bin/bash $REPLY/myScript.sh 

我有腳本來執行這個文件從這個question。我試着用source $REPLY/myScript.sh以及sh $REPLY/myScript.sh來做。我得到錯誤/path/to/file/ is a directory

它必須是它不知道我想運行myScript.sh,但我不明白我是如何給它一個目錄。

回答

1

可能的原因是拖放操作會在目錄名稱後面留出空白。

這樣:

/bin/bash $REPLY/myScript.sh 

將運行

/bin/bash /path/to/directory /myScript.sh 

一個簡單的修正,如果這只是一個標準的空間,將是:

/bin/bash "${REPLY% }/myScript.sh" 
+0

Hooray!這個百分比符號如何解決它? – 1252748

+0

@ thomas,這是一個參數擴展,剝離尾隨空間。請參閱http://wiki.bash-hackers.org/syntax/pe以獲得完整的參考資料,或者http://mywiki.wooledge.org/BashFAQ/073以獲得更爲溫和的介紹。 –

-2

由於您正在閱讀的內容無法保存,因此您很遺失read命令中的變量。您可以按如下方式替換read命令。

#prompt for directory in which to build project 
    read -p "Drag and drop the directory in which you'd like to build this project: " REPLY 
+1

不真實的。 'read'默認存儲到變量'$ REPLY'中。 (這是一種bashism而不是POSIX行爲,但是,這是一個爲bash標記的問題)。 –