![具有多个 OR 条件的 IF 循环会引发语法错误](https://linux22.com/image/165358/%E5%85%B7%E6%9C%89%E5%A4%9A%E4%B8%AA%20OR%20%E6%9D%A1%E4%BB%B6%E7%9A%84%20IF%20%E5%BE%AA%E7%8E%AF%E4%BC%9A%E5%BC%95%E5%8F%91%E8%AF%AD%E6%B3%95%E9%94%99%E8%AF%AF.png)
我想在比较字符串值时添加多个或条件,与单个字符串值我的以下代码正在运行
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
与两个字符串进行比较CheckForUpdate
,Result
因此始终为 false(CheckForUpdate 和 Result 都不以 开头p
)。
settingsdata['autocompare'] = True
=
在大多数 shell 实现中,周围的空格将是一个语法错误,它是不是一项任务。