String 基本语法错误-KSH

String 基本语法错误-KSH,string,syntax,ksh,String,Syntax,Ksh,我已经调试这一行有一段时间了,我相信它很简单: 370 #Loop through the file looking for any non-required lines 371 { while read myline;do 372 if [[ $myline != "WARN0; 300086; prod_file_stat; Can't find EBCDIC product for PRODUCT_FILE_STATUS;for ASCII 10288" && $mylin

我已经调试这一行有一段时间了,我相信它很简单:

370 #Loop through the file looking for any non-required lines
371 { while read myline;do
372 if [[ $myline != "WARN0; 300086; prod_file_stat; Can't find EBCDIC product for PRODUCT_FILE_STATUS;for ASCII 10288" && $myline != "WARN0; 300086; prod_file_stat; Can't find EBCDIC product for PRODUCT_FILE_STATUS;for ASCII 10284" ]]; then
373 echo "ERR: file contains unacceptable errors or warnings! Please double check!"
374 err=1
375 fi
我得到:

  check[50]: syntax error at line 373 : `10284" ]]; then
     echo "ERR:' unexpected

这与字符串中的空格有关吗,还是说这是一条红鲱鱼?这是一个KSH脚本。

错误提示引号不匹配。我在你发布的行中没有看到任何内容,我怀疑问题是从脚本的前面开始的。请注意行号是错误的--“10284”在372上,但错误信息是373。请引用您的变量
“$myline”
为了清晰起见,我对它进行了编辑,并将在您在
ksh-x
下运行的varsHave上使用引号进行尝试?为什么不呢?在大多数Unix shell中都有三个独立的调试工具,至少是从Bourne shell派生出来的(所以POSIX shell;我不确定C shell)。它们是
-x
(执行时跟踪)、
-v
(读取脚本时打印)和
-n
(不实际执行)
Xsh-nv new script.sh
将在不执行任何操作的情况下执行语法检查,并且输出可能会帮助您识别某些块未正确完成的“阻塞错误”(引号或结束关键字等)。将
-n
-x
组合在一起是没有意义的。