여러 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

이것이 실제로 쉘이라면 오류가 너무 많아서 어디서부터 시작해야 할지 알기 어렵습니다.

if prname == 'CheckForUpdate':

명령은 쉘에서 prname두 개의 인수와 함께 호출되므로 이름 ==CheckForUpdate: 지정된 명령을 찾을 수 없다는 오류가 발생할 수 있습니다 prname.

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

더 좋지만 prname문자열을 두 개의 string 과 비교 CheckForUpdate하므로 Result항상 false입니다(CheckForUpdate도 Result도 one으로 시작하지 않음 p).

settingsdata['autocompare'] = True

=대부분의 쉘 구현에서 주변 공백은 구문 오류가 됩니다.아니요작업.

관련 정보