将 bash 配置文件作为参数传递

将 bash 配置文件作为参数传递

我试图将config文件 asan 参数从命令行传递到脚本,但没有得到预期的结果。谢谢 :)。

配置在命令行上调用为:

bash script.sh /path/to/config.txt

/path/to/config.txt 的内容

#File1comment
var1=/path/to/file1
#File2comment
var2=/path/to/file2

script.sh 的内容

config=$1

. $config

echo -e "$@"
test -n "$1" && set -- a b c

当前的

/path/to/config.txt

想要的 --- 每个可用于脚本的文件 ---

/path/to/file2
/path/to/file2

新代码

config=$1

set -- $config
echo -e "$@"
while read line; do
  printf "$line" >script.sh
done <"$config"

答案1

有点不清楚您想要或需要对配置文件做什么。

如果您的配置文件是您希望在脚本中获取的文件(如您在示例之一中所做的那样),则将$config执行文件名中的代码。

执行文件名中的代码$config设置两个变量var1var2。要使用它们的值,请在脚本中使用$var1和。$var2

#!/bin/bash

config=$1

. $config

printf 'var1 is %s\n' "$var1"
printf 'var2 is %s\n' "$var2"

如果您想解析出=由 指向的文件中的字符之后的字符串$config,那么您可能会不是获取文件的来源,然后sed像这样使用:

#!/bin/bash

config=$1

sed -n '/^#/d; /[^=]*=/s///p' "$config"

此脚本中的命令sed会忽略以字符开头#或不包含=字符的任何行。对于每隔一行,=该行的第一个字符及其前面的所有字符都将被删除,并打印剩余的数据。

相关内容