コンパイルエラー文字の欠落 - Unixシェルスクリプト

コンパイルエラー文字の欠落 - Unixシェルスクリプト

UBM unixディレクトリで3つのファイルを見つける必要があります。 1つの(CMUSER)ファイルが利用可能な場合は、unixスクリプトを終了する必要があります。

これは私のUnixシェルスクリプトロジックです。なぜコンパイルエラーが発生するのですか?

cd /$UBCS
if [ -f /$UBM/CSUSER.LOCKED -o -f /$UBM/CSUSER.START]
     -o f /$UBM/CSUSER.UPDATE ];
then
   exit;
fi

私のコンパイルエラーは次のとおりです

Enter script to execute: atm-autopbf
/rd23/gilbat/R2016/ubcs/atm-autopbf[38]: test: 0403-021 **A ] character is missing**
.
/rd23/gilbat/R2016/ubcs/atm-autopbf**[39]: -o:  **not found.****

 Not running C/S (SHELMATE MAXSESSIONS=0). Aborting ...

Press <ENTER> to continue:

答え1

あなたのスクリプト、

cd /$UBCS
if [ -f /$UBM/CSUSER.LOCKED -o -f /$UBM/CSUSER.START]
     -o f /$UBM/CSUSER.UPDATE ];
then
   exit;
fi

文法的なエラーがあります。 if[ ... ]文が不均衡です。また、/$UBM/CSUSER.START間と下にスペースが必要です]

#!/bin/sh

cd "/$UBCS" || exit 1

if [ -f "/$UBM/CSUSER.LOCKED" ] ||
   [ -f "/$UBM/CSUSER.START"  ] ||
   [ -f "/$UBM/CSUSER.UPDATE" ]
then
   exit
fi

ShellCheckにスクリプトを貼り付けてみてください。https://www.shellcheck.net/

さらに、あなたは得られません編集シェルスクリプトエラー(コンパイルされていないため)分析する間違い。

関連情報