Eri*_*ins 7 linux shell-script
试图理解这段代码:
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
Run Code Online (Sandbox Code Playgroud)
我不确定 -f 的确切含义。
Ser*_*nyy 15
简而言之,/etc/bashrc如果代码段存在,则将其作为源文件,并通过作为运算符/参数的[命令来验证其存在性-f。
if...then...else...fishell 脚本中的语句评估命令的退出状态 - 成功时为 0。所以做这样的事情是正确的:
if ping -c 4 google.com; then
echo "We have a connection!"
fi
Run Code Online (Sandbox Code Playgroud)
在您的情况下,该命令[也称为test命令。所以这样做是完全有效的
if test -f /etc/bashrc; then
. /etc/bashrc
fi
Run Code Online (Sandbox Code Playgroud)
-f 标志验证两件事:提供的路径存在并且是一个常规文件。如果/etc/bashrc实际上是目录或丢失,则测试应返回非零退出状态以表示失败
该命令原本是一个单独的命令,不属于 shell 的内置命令。现在,大多数类似 Bourne 的 shell 都内置了它,这就是 shell 将使用的。
附带说明一下,/etc/bashrc您的管理员或代码片段的原始作者正在使用的似乎是不必要的额外文件。存在/etc/bash.bashrc,它旨在作为系统范围的 bash rc 文件,因此人们希望使用它。
也可以看看:
ste*_*eve 10
检查此问题的相关手册页是 shell 本身的手册页bash,因为-f是 shell 提供的功能,它是内置的 bash。
在我的系统 (CentOS 7) 上,精美的手册页涵盖了它。该grep可能不会给其他发行版相同的结果。尽管如此,如果您运行man bash然后搜索“-f”,它应该会给出您需要的结果。
$ man bash | grep -A1 '\-f file$'
-f file
True if file exists and is a regular file.
$
Run Code Online (Sandbox Code Playgroud)