Ksh
如何檢查 ksh 腳本的語法錯誤?
$ cat foo.sh #!/bin/ksh echo foo ehco foo2
它不會警告錯誤:
$ /bin/ksh -n foo.sh $ echo $? 0
**問題:**如何讓“ksh -n”警告我語法錯誤?
如果您在該腳本中有語法錯誤,您會在 stderr 上看到它們。
ksh -n
是正確的。一個例子:$ cat script.ksh touch tmpfile for f in tmpfile # missing "do" rm $f done $ ksh script.ksh script.ksh: syntax error at line 3: `rm' unexpected $ ls -l tmp* -rw-rw-r-- 1 glennj glennj 0 Jul 22 06:54 tmpfile $ rm tmpfile $ ksh -n script.ksh script.ksh: syntax error at line 3: `rm' unexpected $ ls -l tmp* ls: cannot access tmp*: No such file or directory
因此,腳本已解析但未執行(未創建文件)
這不是實際 ksh 語法的語法錯誤,而是僅在執行時擷取的無效命令名稱的語法錯誤。當你執行它時,你會得到 command not found 錯誤。
如果添加:
echo foo ehco foo2 if [ 1 -lt 0 ] then echo 123 done
然後執行:
$ ksh -n foo.sh foo.sh: syntax error at line 9: `done' unexpected