我有两个脚本,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
#!/bin/bash
func2()
{
if [ ${OPTION} == "one" ] ; then
echo "Option one"
else
echo "Option two"
fi
}
func2
澄清一下,如果我运行configScript.sh
并选择选项,则会根据需要输出Option one
。如果我然后运行genScript.sh
我也想要输出Option one
编辑* 更新了代码
答案 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" ]]; ...