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

Bash 配置脚本将值传递给另一个脚本,bash,Bash,我得到了这两个脚本,configScript.sh和genScript.sh。第一个正是我想要的。我想让第二个选项保持上次运行配置文件时选择的选项,然后根据这一点显示正确的echo。现在,它始终显示第二个选项。这可行吗 #!/bin/bash -x func() { echo " Choose 1 - Option 1 2 - Option 2 " echo -n " Enter selection: " read select case $select in 1 )

我得到了这两个脚本,configScript.sh和genScript.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
为了澄清,如果我运行configScript.sh并选择option,它会根据需要输出选项1。如果我运行genScript.sh,我希望它也输出选项1

编辑*
更新了代码

可能是导出选项而不是导出搜索栏。

请尝试以下代码:

#!/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。

我想知道您的shebang行之前是否有注释行:!必须是文件中的前2个字符

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

[ "$option" == "one" ]

配置脚本需要存储以下值,而不是导出:

declare -p OPTION > ~/.my_config
然后另一个脚本就可以了

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

但这并不能解决这样一个事实,即如果我只是在shell中编写./genScript.sh,我希望更新后的genScript.sh运行,对吗?好的,现在我不理解实际问题,我的答案将不起作用。我已更改了答案,因此所选值应在第一个脚本终止后继续存在。我希望它能工作。如果我理解正确,我应该将configScript中的行从option=one export option./genScript.sh更改为export option=one./genScript.sh。如果是,则在运行脚本时会出现此错误。/genScript.sh:第5行:[:=:预期的一元运算符非常奇怪,我没有收到这样的错误。如果代码在两行以上工作,您可以切换回它。我忘记添加,您必须使用../configScript.sh运行第一个脚本。这意味着脚本将在父shell中运行并设置环境变量。我更改了,因此shebang是第一个。这将如果单独运行,仍然无法解决genScript.sh保留上次运行configScript.sh时的选项值的问题。哦,这是一个完全不同的问题:您需要将上一个值的值永久存储在某个位置,例如存储到文件中,然后genScript将必须读取该文件。@janos您可以指定I位吗更好?最好是代码示例,因为我对bash非常陌生
declare -p OPTION > ~/.my_config
. ~/.my_config
if [[ $OPTION == "one" ]]; ...