0

このシェル スクリプト myScript.sh があります。環境変数を設定する構成ファイルを作成しようとしています。しかし、私はLinuxの初心者なので、どうすればいいのか混乱しています。

これが 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) シェル スクリプト内で python スクリプトを呼び出す必要がありますが、名前はユーザーによって異なる場合があります。では、正確なコマンドを宣言するにはどうすればよいですか

python pythonScript.py --arguments

構成ファイルで実行しなくても、いつでもシェルスクリプト内でそのコマンドを実行できるはずです。を使おうとしていた

python bla blaコマンドを実行しましたが、それを行う正しい方法を理解していませんでした。

どんな助けでも大歓迎です

4

1 に答える 1

1

どのファイルが何をどのように組み合わせるかは不明です。あるファイルは別のファイルの代わりになりますか? 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[@]}"

于 2012-06-14T01:54:09.367 に答える