我有一个简单的代码,它运行一个随时间增长的case语句。我希望其他用户更新可能的情况,但我不希望他们更新代码。是否可以从名为optionsfile.txt的文件中获取选项?
当前样本:
read input
case $input in
option1 )
echo option1 ;;
option2 )
echo option2 ;;
esac
更改为:
read input
case $input in
Source in file here optionsfile.txt
esac
所以optionsfile.txt的内容如下所示:
option1 )
echo option1 ;;
option2 )
echo option2 ;;
答案 0 :(得分:0)
如果你可以使用2个bash文件:
<强> src.sh 强>
#!/bin/sh
echo -n "Input: "
read input
./optionsfile.sh input
<强> optionsfile.sh 强>
#!/bin/sh
case ${1} in
"a")
echo "You gave me a"
;;
"b")
echo "I hate b"
;;
esac
但请不要使用此文件结构,不要那样调用optionsfile.sh
:)这是我的小测试。
答案 1 :(得分:0)
所以我最终使用了一个脚本,如果在创建函数的optionsfile.txt上更新了日期时间戳,则会调用该脚本。该函数源自主代码。
#!/bin/bash
cat <<Part1
userstuff() {
read input
case $input in
Part1
cat ./optionsfile.txt
cat <<Part2
esac
}
Part2
谢谢。
答案 2 :(得分:0)
我的第一个想法是bash / shell可能是您尝试做的错误媒介,特别是如果您不希望用户触摸代码。 Bash太容易破碎了。在bash脚本中采购任何东西都必然让他们触摸代码。
我的第二个想法是将您的选项抽象为另一种格式(ini,yaml,json等),然后加强主脚本以使用第三方实用程序解析选项,例如crudini
或{{ 1}}。
甚至可以使用更易于访问的内容(如PHP)。这是更宽容的方式。
所有这一切,如果您只是jq
第二个文件,我建议做两件事:
这样你就不会欺骗用户了解正在发生的事情。您的用户和他们使用的编辑将有更好的机会不破坏所有内容。