解释这个bash脚本

Ste*_*e88 -5 unix bash shell

谁能告诉我这个脚本会做什么?什么是第3行的-z?

  Filename=File.txt
  X=`ls /home/$Filename`
  if [ -z "$X" ]; then
  exit
  fi
Run Code Online (Sandbox Code Playgroud)

rid*_*rid 5

Filename=File.txt
Run Code Online (Sandbox Code Playgroud)

$Filename变量现在拥有的价值File.txt.

X=`ls /home/$Filename`
Run Code Online (Sandbox Code Playgroud)

$X变量现在包含指令的输出ls /home/File.txt.如果文件存在,它将包含一些内容,否则它将是一个空字符串.

if [ -z "$X" ]; then
Run Code Online (Sandbox Code Playgroud)

如果变量的值$X是空字符串(意味着/home/File.txt不存在,否则$X将包含某些内容),则:

  exit
fi
Run Code Online (Sandbox Code Playgroud)

这是一种非常尴尬的写作方式:

if ! [ -e "/home/File.txt" ]; then exit; fi
Run Code Online (Sandbox Code Playgroud)

-e如果路径存在,则返回true.您还可以检查文件(-f),目录(-d),符号链接(-L)等.查看man [可以使用的更多选项[.你也会在-z那里找到:

-z string 如果长度string为零,则为真.