$ cat foo.sh
#!/bin/ksh
echo foo
ehco foo2
エラーについて警告しません。
$ /bin/ksh -n foo.sh
$ echo $?
0
質問:「ksh -n」が構文エラーについて警告するようにするにはどうすればよいですか?
答え1
これは実際の ksh 構文の構文エラーではなく、実行時にのみ検出される無効なコマンド名の構文エラーです。実行すると、コマンドが見つからないというエラーが発生します。
追加する場合:
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
答え2
スクリプトに構文エラーがある場合は、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
したがって、スクリプトは解析されますが、実行されません。 (ファイルは生成されません。)