用于 。在 bash 中

用于 。在 bash 中
#!/usr/bin/env bash

scriptdir="$HOME"
touch $scriptdir/foo.txt
. "$scriptdir/foo.txt" ||
{ echo "Missing '$scriptdir/foo.txt'. Exiting." ;
exit 1 ;}
echo "$scriptdir/foo.txt is present"
echo
rm "$scriptdir/foo.txt"
. "$scriptdir/foo.txt" ||
{ echo "Missing '$scriptdir/foo.txt'. Exiting." ;
exit 1 ;}

.我不明白in的用法. "$scriptdir/foo.txt" ||

它的功能似乎类似于if [ -f "$scriptdir/foo.txt ],是吗?

这样

scriptdir="$HOME"
touch $scriptdir/foo.txt
 if [ -f "$scriptdir/foo.txt" ] ; then
   echo
 else
 { echo "Missing '$scriptdir/foo.txt'. Exiting." ;
exit 1 ;}
 fi

产生类似的结果。

.有人可以详细说明一下这里的用途吗?

如果我在 foo.txt 中编写一个脚本,那么该脚本可能会运行,因为.会导致文件执行,而不仅仅是查看它是否存在?并且,只要$scriptdir/foo.txt存在并且可执行,那么右半部分||将永远不会运行,因为左半部分返回的退出状态为零?

答案1

.是 bash 内置命令,与 相同source,它的作用是从当前 shell 中的 FILENAME 读取并执行命令。在终端中输入help .help source以查看其完整文档。
完整文档:

.: . filename [arguments]
    Execute commands from a file in the current shell.

    Read and execute commands from FILENAME in the current shell.  The
    entries in $PATH are used to find the directory containing FILENAME.
    If any ARGUMENTS are supplied, they become the positional parameters
    when FILENAME is executed.

    Exit Status:
    Returns the status of the last command executed in FILENAME; fails if
    FILENAME cannot be read.

相关内容