2013-10-21 72 views
0

我需要使用主shell腳本(它具有啓動其他shell腳本的所有命令)執行「n」個shell腳本。由於所有其他shell腳本都位於不同的位置,因此無法爲所有人提供相同的路徑,因此我不想重複執行「cd」命令。Shell腳本 - 路徑和運行命令在一行

除此之外,有沒有什麼辦法可以啓動我的shell腳本,同時在一行中給出run和path?

如:

"run command" "path" (for file) 
"run command" "path" (for file1) 

請任何人都可以在此幫助。

+0

你最好展示一些代碼,以便我們更好地理解問題。例如,您可以使用'DEFAULT_PATH =「/ your/path」',然後使用'$ DEFAULT_PATH/script1.sh','$ DEFAULT_PATH/script2.sh'等來調用腳本。 – fedorqui

+0

是不是可以使用絕對路徑到文件? –

回答

0

至於我能理解你的需求,它列出了下來以下目標:

  1. 你不想改變,以便在不同的路徑來執行不同的腳本當前的路徑。

    解決方案:

    a。您可以直接在命令行中使用完全絕對路徑運行腳本,而無需更改當前路徑。

    b。您可以使用bash命令,pushd和popd在當前路徑和其他位置之間頻繁切換。

  2. 啓動shell腳本,同時在一行中給出run和path。 解決方案:

    這可以通過在兩個命令之間使用分號來實現。例如: 通過1個命令創建在某些其他位置比當前目錄的文件夾是可以做到:

    cd /home/user ; mkdir testfolder

  3. 如果運行命令使用路徑作爲輸入參數來運行命令。 解決方案:

    這可以通過執行每個命令之前使用pushd和popd命令來實現。

+0

或者對於3,您可以在子外殼中運行。 '(cd「$ path」;「$ cmd」)不會更改父shell的工作目錄(括號會強制命令在它們自己的子shell中執行)。 – tripleee

+0

但是單獨運行應該給出一個限制,即一個腳本中正在設置(或正在導出)的任何臨時變量/標籤將不會在另一個腳本中被識別。 – pRAShANT

+0

如果我使用一行./shell1.sh; d:/ newfolder/sample1 ..工作正常..但對於第二行,我必須使用「cd ..」兩次返回到「d」驅動器...然後我可以給下一行爲./ shell2.sh; d:/ newfolder/sample2 ...這裏如何避免「cd ..」(使用過兩次)... – user2039349