从Shell

时间:2016-08-25 20:16:40

标签: linux bash shell variables

我对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。

有人知道吗?感谢您的任何提示

2 个答案:

答案 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