如何比较 ksh 中的字符串

如何比较 ksh 中的字符串

我想检查作业的结果并在 上执行操作FAILED

首先:我 grep 应用程序日志文件中该行的最后一个单词(对于最近处理的文件 ( $processedfilename)):

check1=$(grep "$processedfilename" "$logfile" | grep "anotherword" | \
    grep "FAILED" | tail -1 | awk '{print $NF}')

这导致[FAILED].

现在我想检查结果

if [ $check1 -eq "[[FAILED]" ] 
then

或者

if [ $check1 -eq "\[FAILED]" ] 
then

总有算术语法错误

检查的正确语法是什么[FAILED]

答案1

您应该始终用双引号引用变量。并且您需要=字符串等于。所以:

if [ "$check1" = "[FAILED]" ]; then

答案2

您正在通过使用进行算术比较-eq导致错误,您需要通过使用=(或==内部[[)进行字符串比较,为此使用引号就足够了:

[ "$check1" = "[[FAILED]" ]
[[ "$check1" = "[[FAILED]" ]]

相关内容