Bash配置文件或命令行参数

时间:2012-07-03 17:42:42

标签: linux bash parameters

如果我正在编写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.119myname@10.20.205.67,但是当我执行$ echo $#时,即使我在命令行传入'myname',我也会得到0。 / p>

2 个答案:

答案 0 :(得分:0)

是的,你可以。此外,它取决于您的脚本架构。您可以使用config中的值覆盖参数,反之亦然。

顺便说一句,shflags在写这样的剧本时非常有用。

答案 1 :(得分:0)

假设“配置文件”只是一个源自主脚本的shell(通常包含一些变量的定义),如下所示:

. /etc/script.conf

当然你可以在任何地方使用位置参数(在./ etc /..."):

之前或之后
echo "$@"
test -n "$1" && ...

您甚至可以在脚本或相同的配置文件中定义它们:

test $# = 0 && set -- a b c