Utilities
方括號執行檔的目的是什麼
我看到有一個名為“[”的執行檔在
/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