grub2 脚本中的 if 语句总是计算为 true

Posted

技术标签:

【中文标题】grub2 脚本中的 if 语句总是计算为 true【英文标题】:if statements in grub2 script always evaluate to true 【发布时间】:2013-11-23 01:26:44 【问题描述】:

我正在尝试编写一个 grub2 引导加载程序脚本,但 if 语句总是评估为 true:

if [ -s blabla ] ; then set zzz0="1" ; fi
if [ ! -s blabla ] ; then set zzz1="1" ; fi

set TEST_VAR=foo

if [ "x$TEST_VAR" = "xfoo" ] ; then set zzz2="1" ; fi
if [ "x$TEST_VAR" = "xbar" ] ; then set zzz3="1" ; fi

if [ $TEST_VAR = foo ] ; then set zzz4="1" ; fi
if [ $TEST_VAR = bar ] ; then set zzz5="1" ; fi

所以,运行此脚本后,我看到所有 zzz(zzz0、zzz1、zzz2、zzz3、zzz4、zzz5)变量都设置为 1。我做错了什么?

谢谢, 强尼

【问题讨论】:

【参考方案1】:
if [ ! "$myvar" = "" ]; then
   (lines here)
else
   (lines here)
fi

if [ "$myvar" = "fred" ]; then
   (lines here)
else
   (lines here)
fi

【讨论】:

以上是关于grub2 脚本中的 if 语句总是计算为 true的主要内容,如果未能解决你的问题,请参考以下文章

如果第一个条件为假,假设 if-and 语句总是会中断是不是安全? [复制]

优化if语句、计算、会话查询

在简单的 bash 脚本中使用 find 命令和 if 语句

Shell脚本笔记shell中的数学计算

基于 Python 字符串的 if 语句

#yyds干货盘点# shell脚本入门持续更新一天一个知识点