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
(如果您只是要退出,则没有必要更改工作目录。)
我正在尝试制作一个脚本来自动将我的配置写入我启动的任何新 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
(如果您只是要退出,则没有必要更改工作目录。)