无法将 shopt globstar 输出保存到变量
Unable to save shopt globstar output to variable
我正在尝试将 shopt globstar
的当前状态保存到一个变量中,以便我可以在需要时更改它,然后将其设置回去,以免改变用户的环境。
我曾尝试以多种方式存储命令输出,例如 var=$(command)
和 var=`command`
但是当我测试时
echo $var
它始终将状态读取为 "off",即使它不是。
gstar=$( shopt globstar )
echo "$gstar"
我希望使用 echo 来手动测试当前状态 运行 shopt globstar
但它们不匹配。
这个基本变量存储在 whoami
命令下工作正常。
您是直接 运行 编写脚本 (./script.sh
) 还是采购脚本 (. script.sh
或 source script.sh
)?
如果您直接 运行ning 它,它将有自己的环境,您不必担心保留用户的设置。脚本获取用户环境的副本,更改只会影响副本,不会影响原始环境。只需在脚本顶部设置您喜欢的选项即可。
#!/bin/bash
shopt -s globstar
foo **/bar
如果它是源代码,那么将脚本的相关部分包装在子 shell 中会容易得多,这样它们 运行 在一个隔离的环境中。
(
shopt -s globstar
foo **/bar
)
baz
我怀疑是情况 1,因为你说它总是开始 off
。
保存购物值:
if shopt -q globstar
then
# the option is enabled
saved_globstar=-s
else
# the option is disabled
saved_globstar=-u
fi
现在您可以更改您的 globstar 值。如果您稍后想将其恢复到以前的状态,请执行
shopt $saved_globstar globstar
我正在尝试将 shopt globstar
的当前状态保存到一个变量中,以便我可以在需要时更改它,然后将其设置回去,以免改变用户的环境。
我曾尝试以多种方式存储命令输出,例如 var=$(command)
和 var=`command`
但是当我测试时
echo $var
它始终将状态读取为 "off",即使它不是。
gstar=$( shopt globstar )
echo "$gstar"
我希望使用 echo 来手动测试当前状态 运行 shopt globstar
但它们不匹配。
这个基本变量存储在 whoami
命令下工作正常。
您是直接 运行 编写脚本 (./script.sh
) 还是采购脚本 (. script.sh
或 source script.sh
)?
如果您直接 运行ning 它,它将有自己的环境,您不必担心保留用户的设置。脚本获取用户环境的副本,更改只会影响副本,不会影响原始环境。只需在脚本顶部设置您喜欢的选项即可。
#!/bin/bash shopt -s globstar foo **/bar
如果它是源代码,那么将脚本的相关部分包装在子 shell 中会容易得多,这样它们 运行 在一个隔离的环境中。
( shopt -s globstar foo **/bar ) baz
我怀疑是情况 1,因为你说它总是开始 off
。
保存购物值:
if shopt -q globstar
then
# the option is enabled
saved_globstar=-s
else
# the option is disabled
saved_globstar=-u
fi
现在您可以更改您的 globstar 值。如果您稍后想将其恢复到以前的状态,请执行
shopt $saved_globstar globstar