我正在尝试将 shopt globstar
的当前状态保存到一个变量中,以便我可以在需要时更改它,然后将其设置回去,以免改变用户的环境。
我曾尝试以多种方式存储命令输出,例如 var=$(command)
和 var=`command`
但是当我测试时
echo $var
它始终将状态读取为“关闭”,即使它不是。
gstar=$( shopt globstar )
echo "$gstar"
我希望使用 echo 来针对手动运行 shopt globstar
测试当前状态,但它们不匹配。
这个基本的变量存储在 whoami
命令下运行良好。
最佳答案
您是直接运行脚本 (./script.sh
) 还是获取脚本 (.script.sh
或 source script.sh
)?
如果您直接运行它,它将拥有自己的环境,您不必担心会保留用户的设置。脚本获取用户环境的副本,更改只会影响副本,不会影响原始环境。只需在脚本顶部设置您喜欢的选项即可。
#!/bin/bash shopt -s globstar foo **/bar
如果要获取源代码,只需将脚本的相关部分包装在子 shell 中以便它们在隔离环境中运行会容易得多。
( shopt -s globstar foo **/bar ) baz
我怀疑是情况 1,因为你说它总是从 off
开始。
关于bash - 无法将 shopt globstar 输出保存到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54535189/