我对Linux shell脚本有疑问。我的问题实际上是抽象的,所以可能没有意义。这个想法是有1个脚本和2个配置文件。
脚本可以像(drinkOutput.sh):
#!/bin/bash
echo -e " $1 \n"
echo -e " $2 \n"
第一个配置文件包含(beer.conf):
drink1="heineken"
drink2="argus"
第二个配置文件包含(vine.conf):
drink1="chardonnay"
drink2="hibernal"
关键是调用脚本。它必须采用下一种格式(或带参数)
./drinkOutput.sh beer.conf
在这种情况下,我需要1美元的喜力啤酒和2美元的argus(在drinkOutput脚本中)。对于
./drinkOutput.sh vine.conf
我需要回到drinkOutput.sh chardonnay和hibernal。
有人知道吗?感谢您的任何提示
答案 0 :(得分:3)
如果配置文件格式正确,您可以source
配置文件(似乎在您的示例中)。
drinkOutput()
{
echo "$1"
echo "$2"
}
conf="$1"
source "$conf"
drinkOutput "$drink1" "$drink2"
答案 1 :(得分:0)
如果你的脚本在从conf文件中解析出来后,你的脚本会使用正确的参数调用自己,那么可以使用
if [ $# == 2 ] ; then
# The arguments are correctly set in the sub-shell.
# 2 arguments: do something with them
echo magic happens: $1 $2
elif [ $# == 1 ] ; then
# 1 argument: conf file: parse conf file
arg1=`sed -n -e 's#drink1="\(.*\)"#\1#p' $1`
arg2=`sed -n -e 's#drink2="\(.*\)"#\1#p' $1`
$0 $arg1 $arg2
else
# error
echo "wrong args"
fi
试验:
$ drinkOutput.sh beer.conf
magic happens: heineken argus