具有多个 OR 条件的 IF 循环会引发语法错误

具有多个 OR 条件的 IF 循环会引发语法错误

我想在比较字符串值时添加多个或条件,与单个字符串值我的以下代码正在运行

 prname ="$projname"
    if prname == 'CheckForUpdate':
        settingsdata['autocompare'] = True
        settingsdata['autorecords'] = True

但是当我添加多个 OR 条件时,它会抛出以下语法错误:

prname ="$projname"
    if [prname == 'CheckForUpdate'] || [prname == 'Result'];
    then
            settingsdata['autocompare'] = True
            settingsdata['autorecords'] = True

获取错误:

 if [ prname == 'CheckForUpdate' ] || [ prname == 'Result' ]
                                   ^
SyntaxError: invalid syntax

任何人都知道为什么会这样,我正在使用#!/bin/sh

答案1

如果这确实是 shell,那么错误太多,很难知道从哪里开始。

if prname == 'CheckForUpdate':

在 shell 中将调用prname带有两个参数的命令==CheckForUpdate: 因此可能会给您一个错误,指出它找不到名为 的命令prname

if [ prname == 'CheckForUpdate' ] || [ prname == 'Result' ]

更好,但它将字符串prname与两个字符串进行比较CheckForUpdateResult因此始终为 false(CheckForUpdate 和 Result 都不以 开头p)。

settingsdata['autocompare'] = True

=在大多数 shell 实现中,周围的空格将是一个语法错误,它是不是一项任务。

相关内容