如果我正在编写bash脚本,我选择使用配置文件作为参数。我还可以通过命令行传递参数吗?我想我问我可以用同样的命令做两件事吗?
淡化代码:
#!/bin/bash
source builder.conf
function xmitBuildFile {
for IP in "{SERVER_LIST[@]}"
do
echo $1@$IP
done
}
xmitBuildFile
builder.conf:
SERVER_LIST=( 192.168.2.119 10.20.205.67 )
$bash> ./builder.sh myname
我的预期输出应为myname@192.168.2.119
和myname@10.20.205.67
,但是当我执行$ echo $#
时,即使我在命令行传入'myname',我也会得到0。 / p>
答案 0 :(得分:0)
是的,你可以。此外,它取决于您的脚本架构。您可以使用config中的值覆盖参数,反之亦然。
顺便说一句,shflags在写这样的剧本时非常有用。
答案 1 :(得分:0)
假设“配置文件”只是一个源自主脚本的shell(通常包含一些变量的定义),如下所示:
. /etc/script.conf
当然你可以在任何地方使用位置参数(在./ etc /..."):
之前或之后echo "$@"
test -n "$1" && ...
您甚至可以在脚本或相同的配置文件中定义它们:
test $# = 0 && set -- a b c