Utilities

方括號執行檔的目的是什麼

  • January 22, 2016

我看到有一個名為“[”的執行檔在/usr/bin. 它的目的是什麼?

在此處輸入圖像描述

在大多數情況下,[它是一個內置的 shell,相當於test. 但是,就像 一樣test,它也作為獨立的執行檔存在:這就是/bin/[您所看到的。您可以使用type -a [(在 Arch Linux 系統上,執行bash)來測試它:

$ type -a [
[ is a shell builtin
[ is /bin/[

所以,在我的系統上,我有兩個[:我的 shell 的內置和/bin. 執行檔記錄在man test

TEST(1)                          User Commands                         TEST(1)

NAME
      test - check file types and compare values

SYNOPSIS
      test EXPRESSION
      test

      [ EXPRESSION ]
      [ ]
      [ OPTION

DESCRIPTION
      Exit with the status determined by EXPRESSION.

[ ... ]

正如您在上面引用的手冊頁的摘錄中看到的那樣,test它們[是等效的。/bin/[and/bin/test命令由 POSIX 指定,這就是為什麼儘管許多 shell 也將它們作為內置命令提供,但您仍會找到它們的原因。它們的存在確保了以下結構:

[ "$var" -gt 10 ]  && echo yes

即使執行它們的 shell 沒有[內置函式也可以工作。例如,在tcsh

> which [
/sbin/[
> set var = 11
> [ "$var" -gt 10 ]  && echo yes
yes

引用自:https://unix.stackexchange.com/questions/257014