Bash 二元运算符的用法

Bash binary operators usage

我正在尝试制作一个脚本来自动将我的配置写入我启动的任何新 Unix 系统

在我的脚本中,我想为我在 vim 中使用的插件创建一个 git 目录,然后 cd 进入它,否则我想 cd 回到我的目录从中调用脚本并退出以避免 运行在错误的目录中执行后续 git 命令。

如下:

( mkdir $nerdgitdir && cd $nerdgitdir ) || ( cd $curPwd & exit 1 )

mkdir $nerdgitdir 命令 运行 很好,从目录的存在可以看出,但我从来没有进入它。我也不会因为“失败”cd|| 运算符右侧的行为)而退出脚本,因为脚本会继续 运行 git命令在错误的目录中。

知道我在这行中做错了什么吗?似乎 cd 命令应该失败,或者 || 之外的表达式应该失败 运行,但布尔逻辑告诉我至少其中一个应该 运行.

您正在更改由 (...) 创建的 subshell 的工作目录,而不是您当前的 shell。您需要使用 {...} 代替:

{ mkdir "$nerdgitdir" && cd "$nerdgitdir"; } || exit 1

(如果您只是要退出,则没有必要更改工作目录。)