" -s"的行为选项" test" bash脚本中的命令

时间:2016-11-29 09:19:31

标签: bash shell unix sh test-command

代码是:

src=/home/Desktop/src
dest=/home/Desktop/dest

if test -s $src/$InputFile ; then
  echo "File is present. :$InputFile" 
else
  echo "File is not present" 
fi

在上面的代码中,如果我声明变量" InputFile"作为InputFile = a.txt然后它去检查src目录中的文件a.txt,如果文件存在则打印"文件存在"。如果文件不存在则打印"文件不存在"。

我没有声明变量" InputFile"在上面的代码中。它仍然转到src路径并执行if条件并打印"文件存在"。谁能告诉我" test -s"的确切行为?当filename变量为空时?

2 个答案:

答案 0 :(得分:1)

你跑了:

test -s /home/Desktop/src/

/home/Desktop/src/不是空目录。

答案 1 :(得分:0)

误解源于-s不仅适用于常规文件,而且适用于所有类型的文件。

因此,当您将InputFile变量设为null时,它会检查从$src扩展的目录的存在和大小,并将$?作为0返回为目录在文件系统上占用最小块大小(假设目录存在于第一位)。