Bash二进制运算符的用法

Bash二进制运算符的用法,bash,unix,boolean-operations,termux,Bash,Unix,Boolean Operations,Termux,我正在尝试编写一个脚本,以便自动将配置写入我启动的任何新Unix系统 在我的脚本中,我想为我在vim中使用的插件创建一个git目录,然后将cd放入其中,否则我想将cd放回调用脚本的目录并退出,以避免在错误的目录中运行后续的git命令 详情如下: (mkdir$nerdgitdir&cd$nerdgitdir)| |(cd$curPwd&exit 1) 从目录的存在可以明显看出,mkdir$nerdgitdir命令运行良好,但我从未将cd放入其中。我也不会因为“failed”cd(操作符右侧的行为

我正在尝试编写一个脚本,以便自动将配置写入我启动的任何新Unix系统

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

详情如下:

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

从目录的存在可以明显看出,
mkdir$nerdgitdir
命令运行良好,但我从未将cd放入其中。我也不会因为“failed”
cd
(操作符右侧的行为)而退出脚本,因为脚本继续在错误的目录中运行git命令


你知道我这条线哪里做错了吗?看起来cd命令应该失败,或者
|
之外的表达式应该失败,但是布尔逻辑告诉我至少应该运行其中一个表达式。

您正在更改由
(…)
创建的子shell的工作目录,而不是在当前shell中。您需要改用
{…}

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

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

您正在更改由
(…)
创建的子shell的工作目录,而不是在当前shell中。您需要改用
{…}

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

(如果您要退出,更改工作目录是没有意义的。)

谢谢,我不知道我没有使用
源代码调用脚本,所以我想返回到调用脚本的目录from@TheThing如果您正常运行脚本(即没有
命令),它作为一个子进程运行,所以当它
cd
s时,它对父进程没有任何影响(因此您不必担心
cd
返回)。我不知道,哈哈。谢谢,不知道我没有使用
源代码调用脚本,所以我想返回到调用脚本的目录from@TheThing如果您正常运行脚本(即没有
命令),它将作为子进程运行,因此当它
cd
s时,它对父进程没有影响(因此你不必担心
cd
back)。我不知道,哈哈。