这意味着什么 - 如果 [! -e“$exe”];然后在bash中

这意味着什么 - 如果 [! -e“$exe”];然后在bash中

我在linux下看到了一个脚本。我想知道这是什么意思。

if [ ! -e "$exe" ]; then
  exe='/path to some file'
fi

答案1

运行info test查看详情:

16.3.3 File characteristic tests
--------------------------------

These options test other file characteristics.

‘-e FILE’
     True if FILE exists.

‘-s FILE’
     True if FILE exists and has a size greater than zero.

‘FILE1 -nt FILE2’
     True if FILE1 is newer (according to modification date) than FILE2,
     or if FILE1 exists and FILE2 does not.

‘FILE1 -ot FILE2’
     True if FILE1 is older (according to modification date) than FILE2,
     or if FILE2 exists and FILE1 does not.

‘FILE1 -ef FILE2’
     True if FILE1 and FILE2 have the same device and inode numbers,
     i.e., if they are hard links to each other.

答案2

它的意思是“如果变量中的值exe与文件系统中的现有名称不对应,则将其值设置为/path to some file”。

[ -e something ]测试测试该名称是否something作为常规文件、目录或其他类型文件的名称存在。

否定!了测试的意义。

if语句评估给定它的命令(在本例中,命令是[ ! -e "$exe" ]),如果该命令成功(在本例中,文件会执行不是存在),它执行语句体中的语句if(在本例中,是对变量 的赋值exe)。

[您可以通过阅读或test实用程序(man [或)的手册来了解有关各种测试的更多信息man test

if语句在您的 shell 手册中进行了描述(例如man bash)。该手册还将描述变量和变量分配。

相关内容