【问题标题】:syntax check. group two if statements语法检查。分组两个 if 语句
【发布时间】:2012-10-10 03:15:04
【问题描述】:
if [ $DISTRO = "REDHAT"] || [ $DISTRO = "FEDORA"]; then 
    if ! rpm -qa | grep -q glibc-static; then
        $BIN_ECHO -e " Package [glibc-static] not found. Installing.. "
        yum install glibc-static
    elif
        $BIN_ECHO -e " All required packages installed.. "
    fi
elif [ $DISTRO = "DEBIAN"]; then 
    if ! dpkg-query -l glibc; then
        $BIN_ECHO -e " Package [glibc] not found. Installing.. "
        apt-get install glibc
    elif
        $BIN_ECHO -e " All required packages installed.. "
    fi
fi

第 156 行:意外标记 `fi' 附近的语法错误

如何将这两个语句放在一起?

【问题讨论】:

  • 您的源 sn-p 没有行号,所以在未来,请确保我们有办法将错误消息与生成它的行关联起来。

标签: linux bash shell


【解决方案1】:

每次测试的最后一个 ] 之前必须有一个空格。

例如:

if [ $DISTRO = "REDHAT"] || [ $DISTRO = "FEDORA"]; then

必须改写为:

 if [ "$DISTRO" = REDHAT ] || [ "$DISTRO" = FEDORA ]; then

if test "$DISTRO" = REDHAT || test "$DISTRO" = FEDORA; then

还要注意,没有理由引用文字字符串,但应该引用变量。

你也可以这样做:

if test "$DISTRO" = REDHAT -o "$DISTRO" = FEDORA; then

case "$DISTRO" in
REDHAT|FEDORA) ... ;;
DEBIAN) ... ;;
esac

【讨论】:

  • 谢谢。我发现了我的问题,但我也更改为 CASE 语句方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 2014-10-13
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多