配置脚本将值传递给另一个脚本

时间:2013-11-27 20:45:33

标签: bash

我有两个脚本,configScript.shgenScript.sh。第一个正是我想要的。我希望第二个维护上次配置文件运行时选择的选项,然后根据它显示正确的echo。现在它始终显示第二个选项。这可行吗?

#!/bin/bash -x
func()
{
echo "
Choose
1 - Option 1
2 - Option 2
"
echo -n "   Enter selection: "
read select
case $select in
            1 ) 

            echo "  Option 1 chosen"
            export OPTION=one
            . ./genScript.sh
            ;;
            2 )
            echo "  Option 2 chosen"
            option="two"
            export OPTION=one
            . ./genScript.sh
            ;;
esac
}
clear
func

#!/bin/bash
func2()
{
    if [ ${OPTION} == "one" ] ; then
        echo "Option one"
    else  
        echo "Option two"
    fi
}
func2

澄清一下,如果我运行configScript.sh并选择选项,则会根据需要输出Option one。如果我然后运行genScript.sh我也想要输出Option one

编辑* 更新了代码

3 个答案:

答案 0 :(得分:0)

也许是“导出选项”而不是“导出搜索栏”。

答案 1 :(得分:0)

试试这段代码:

#!/bin/bash -x
func()
{
echo "
Choose
1 - Option 1
2 - Option 2
"
echo -n "   Enter selection: "
read select
case $select in
            1 ) 

            echo "  Option 1 chosen"
            OPTION=one
            export OPTION
            ./genScript.sh
            ;;
            2 )
            echo "  Option 2 chosen"
            OPTION=two
            export OPTION
            ./genScript.sh
            ;;
esac
}
clear
func

#!/bin/bash
func2()
{
    if [ ${OPTION} == "one" ] ; then
        echo "Option one"
    else  
        echo "Option two"
    fi
}
func2

最后使用此命令运行configScript.sh:来自shell的. ./configScript.sh

答案 2 :(得分:0)

我想知道你的shebang行之前是否确实有评论行:#!必须是文件中的前2个字符。

我也想知道你是否真的用sh而不是bash执行这些脚本。改变

[ "$option" == "one" ]

[[ $option == "one" ]]

配置脚本需要存储值:

,而不是导出
declare -p OPTION > ~/.my_config

然后另一个脚本可以

. ~/.my_config
if [[ $OPTION == "one" ]]; ...