Bash 无法将shopt globstar输出保存到变量
我正试图将shopt globstar的当前状态保存到一个变量中,以便在需要时对其进行更改,然后将其设置为不改变用户的环境 我尝试过以多种方式存储命令输出,例如var=$command和var=`command',但是当我使用 echo$var它总是将状态读取为关闭,即使它不是Bash 无法将shopt globstar输出保存到变量,bash,shopt,Bash,Shopt,我正试图将shopt globstar的当前状态保存到一个变量中,以便在需要时对其进行更改,然后将其设置为不改变用户的环境 我尝试过以多种方式存储命令输出,例如var=$command和var=`command',但是当我使用 echo$var它总是将状态读取为关闭,即使它不是 gstar=$( shopt globstar ) echo "$gstar" 我希望使用echo测试当前状态与手动运行的shopt globstar,但它们不匹配 这个基本变量存储区与whoami命令配合使用很好。您
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,因为你说它总是从一开始就开始。你是直接运行你的脚本。/script.sh还是源代码。script.sh还是source script.sh 如果您直接运行它,它将有自己的环境,您不必担心保留用户的设置。脚本获取用户环境的副本,更改只影响副本,而不影响原始副本。只需在脚本顶部设置您喜欢的选项
#!/bin/bash
shopt -s globstar
foo **/bar
如果是源代码,只需将脚本的相关部分封装在子shell中,以便它们在隔离的环境中运行,就会容易得多
(
shopt -s globstar
foo **/bar
)
baz
我怀疑是案例1,因为你说它总是从一开始就开始。要保存shopt值:
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值,请执行以下操作:
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
如果您正在编写bash脚本,它通常无法修改调用方的环境。如果您正在编写bash脚本,它通常无法修改调用方的环境。是的,脚本是通过./script.sh直接调用的,因此在这种情况下,听起来像是1,我不必担心读取状态。这是一个很棒的信息,我以前不知道,现在我正沉浸在脚本中,我真的很感谢你在这方面的帮助!是的,脚本是通过./script.sh直接调用的,所以在本例中,听起来像是1,我不必担心读取状态。这是一个很棒的信息,我以前不知道,现在我正沉浸在脚本中,我真的很感谢你在这方面的帮助!