2012-06-14 99 views
0

我有這個shell腳本myScript.sh 我想寫一個配置文件,它設置環境變量。但是因爲我是一個Linux新手,所以我很困惑如何去做。配置文件的shell腳本做動態添加文件-ubuntu

所以這就是myScript.sh的外觀。

export $SERVICE_ROOT=/home/myPath 
export $FILE1PATH=/home/myPath/file1 
export $FILE2PATH=/home/myPath/file2 

... 
$SERVICE_ROOT/bin/integration.bin \ 
$FILE1PATH \ 
$FILE2PATH \ 
. . . 
$FILENPATH 

python pythonScript.py --arguments 

現在,我必須把所有的硬編碼放到配置文件中。正如多個用戶可能想要進行更改一樣。所以我寫了一個config.sh,看起來像這樣。

SERVICE="/home/myPath" 
FILE1PATH=/home/myPath/file1 
FILE2PATH=/home/myPath/file2 

在新的myscript.sh我打電話

export $SERVICE 
export $FILEPATH1 
export $FILEPATH2 

1),但我的問題是我會在第一時間做正確的事情?不知怎的,設置環境變量儘管有配置文件沒有意義,但我無法弄清楚如何去做。

2)用戶可能會在N之外添加FILEPATHM等等。我應該如何修改myScript.sh來動態地將新文件名超出n?

3)我需要在我的shell腳本中調用python腳本,但名稱可能會從一個用戶更改爲另一個用戶。那麼,如何申報的準確命令

python pythonScript.py --arguments 

沒有在配置文件中執行它,但我應該能夠執行我的shell腳本內部的命令,每當我想。我試圖使用

python bla bla命令,但不理解正確的做法。

任何幫助將非常感激

+1

您是否需要導出這些變量?兒童過程是否可見或需要?也就是說,它們只在shell腳本中使用,還是在Python腳本中引用?你是從另一個腳本中獲取一個shell腳本還是運行它? –

+0

@DennisWilliamson只要我可以在我的腳本中使用它們的值,我實際上並不需要導出它們。只有腳本使用所有這些變量而不是python。我只是在我的shell腳本中運行配置文件,並沒有真正採用它。 – user1357576

回答

1

目前還不清楚該文件做什麼,以及如何將它們組合在一起。一個文件是另一個文件的替代品嗎?一個文件是否創建另一個?我認爲如果你澄清一些事情會有幫助。

根據我想你想:

myScript.sh:

#!/bin/bash 
. ./config.sh 

. . . 
"$SERVICE_ROOT/bin/integration.bin" \ 
"$FILE1PATH" \ 
"$FILE2PATH" \ 
. . . 
"$FILENPATH" 

python pythonScript.py --arguments 

config.sh:

SERVICE_ROOT="/home/myPath" 
FILE1PATH=/home/myPath/file1 
FILE2PATH=/home/myPath/file2 

source命令(或.)在指定的文件中讀取並執行它,就好像它實際上是調用腳本的一部分。它與其他語言的include語句非常相似。

一個更加動態的版本可能是這樣的:

myScript.sh:

#!/bin/bash 
. ./config.sh 

. . . 
"$SERVICE_ROOT/bin/integration.bin" "${filepaths[@]}" 

config.sh:

SERVICE_ROOT="/home/myPath" 
filepaths=(
    /home/myPath/file1 
    /home/myPath/file2 
) 

這個版本使用一個數組來保存的路徑。額外的路徑可以添加在括號之間的單獨行中。當擴展${filepaths[@]}"時,所有路徑都作爲參數一次提供。

+0

感謝您幫助我完成文件的採購。那個阻礙我劇本進展的部分我錯了。 for循環正是我想要實現的。我會試試看,並讓你知道它是如何去 – user1357576

+0

@ user1357576:'for'循環?我沒看到一個。 –

+0

對不起...我的意思是陣列..不知道爲什麼我輸入了循環..對不起 – user1357576