0

对于以下代码,我总是收到“源文件不可读或不存在,请检查文件”。我在我的 Windows 机器中使用 cygwin 来运行脚本。即使文件存在于该位置,我也会收到相同的消息。我怎样才能获得更多详细信息,说明文件不可读的原因。

#!/bin/ksh
#
# Scanning source file for existance and readable
file_loc="abc.xml"
if [ -f "$file_loc" -a -r "$file_loc"]
then
    print "Source file read.\n"
else
    print "Source file not readable or exists, please check the file $file_loc.\n"
fi
4

2 回答 2

1

右括号前需要一个空格:

if [ -f "$file_loc" -a -r "$file_loc" ]
于 2012-11-30T10:12:51.607 回答
0
file_loc="abc.xml" && (< ${file_loc:?})

是一种替代检查。一个优点是它针对不同的错误返回不同的消息;我们让 shell 完成所有工作。

这是如何构建的?这一行可以触发至少三种不同的消息:

${varname:? 可选消息语法将}检查未定义的变量,这可能表示变量名中的拼写错误。

(< ${file_lo:?} )

-bash: file_lo: parameter null or not set

(<filename) 只会尝试打开和关闭文件。

$ (< nonesuch ) && echo ok

-bash: nonesuch: No such file or directory

$ (< /etc/shadow ) && echo ok

-bash: /etc/shadow: Permission denied

于 2012-11-30T19:58:38.037 回答