0

我有这个 shell 脚本 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) 我需要在我的 shell 脚本中调用 python 脚本,但名称可能会从一个用户更改为另一个用户。那么我如何声明确切的命令

python pythonScript.py --arguments

无需在配置文件中执行它,但我应该能够随时在我的 shell 脚本中执行该命令。我试图使用

python bla bla命令,但不了解正确的操作方法。

任何帮助都感激不尽

4

1 回答 1

1

目前尚不清楚哪个文件做了什么以及它们如何组合在一起。一个文件可以替代另一个文件吗?一个文件会创建另一个文件吗?我认为如果你能澄清一些事情会有所帮助。

根据我认为你想要的:

myScript.sh:

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

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

python pythonScript.py --arguments

配置文件:

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[@]}"

配置文件:

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

这个版本使用一个数组来保存路径。可以在括号之间的单独行上添加其他路径。当展开时,所有路径都作为参数立即提供${filepaths[@]}"

于 2012-06-14T01:54:09.367 回答