我尝试使用以下语法在shell脚本中声明一个布尔变量:
variable=$false
variable=$true
Run Code Online (Sandbox Code Playgroud)
它是否正确?另外,如果我想更新该变量,我会使用相同的语法吗?最后,使用布尔变量作为正确的表达式是以下语法:
if [ $variable ]
if [ !$variable ]
Run Code Online (Sandbox Code Playgroud) 我正在尝试自动化我们的应用程序备份.过程的一部分是检查的退出状态egrep中的if语句:
if [ ! -f /opt/apps/SiteScope_backup/sitescope_configuration.zip ] ||
[ egrep -i -q "error|warning|fatal|missing|critical" "$File" ]
then
echo "testing"
fi
Run Code Online (Sandbox Code Playgroud)
我希望它输出,testing因为文件存在并egrep返回成功,但我得到一个错误:
-bash: [: too many arguments
Run Code Online (Sandbox Code Playgroud)
我尝试了各种语法 - 附加括号,引号等但错误仍然存在.
请帮助我理解我哪里出错了.
我尝试了这篇SO帖子中的代码 - 如何评估bash中if块中的布尔变量?它不起作用.看起来BASH中没有布尔值.有没有完美的解决方法让我在BASH中设置和检查布尔值?
我的代码 -
#!/bin/bash
flag=true
if [ $flag ]
echo 'True'
#flag=false
#echo 'Now changed to false'
fi
Run Code Online (Sandbox Code Playgroud)
即使第2行中的flag = false,输出仍为True.为什么?