gpt4 book ai didi

linux - bash 脚本来创建和 cd 到名称中有空格的目录

转载 作者:太空狗 更新时间:2023-10-29 11:36:12 25 4
gpt4 key购买 nike

<分区>

我正在开发一个项目,在我的 GitLab CE 实例中远程创建一个存储库(该部分正在运行!),然后使用项目名称创建一个目录(正在运行!)并 cd 进入该目录(这里是我遇到问题的地方......)然后在本地初始化并添加远程存储库(工作!!!)

我遇到的问题只是更改到新目录。无论我使用下面显示的代码,还是只是尝试 cd "$1"cd "$*" 我似乎都无法让它工作!

#!/bin/bash

dir="$*"
wd=$(pwd)
fulldir="$(pwd)/${dir// /\\ }/"
echo "Creating directory $dir"
mkdir -v "$dir"
cd "$dir"
echo "Changing current directory to $dir"
echo $dir
echo $fulldir

这段代码的输出是:

root@cana:~# ls
glnewproj test
root@cana:~# bash test Hello World
Creating directory Hello World
mkdir: created directory 'Hello World'
Changing current directory to Hello World
Hello World
/root/Hello\ World/
root@cana:~# ls
Hello World glnewproj test
root@cana:~# pwd
/root

如何cd 进入我新创建的目录?我完全被难住了。

编辑:

键入每个 ghoti 的函数并在 .bashrc 和我的测试脚本中测试它。

直接从 bash 运行函数时:

root@cana:~# ls
glnewproj test test2
root@cana:~# mkcd "Hello World"
root@cana:~/Hello World#

从新测试脚本中运行函数时:

root@cana:~# ls
glnewproj test test2
root@cana:~# cat test2
#!/bin/bash

mkcd() {
mkdir -p "$1" && cd "$1"
}

mkcd "$1"

root@cana:~# bash test2 "Hello World"
root@cana:~# ls
Hello World glnewproj test test2

因此脚本仍然作为子脚本运行,因此不会更新父 shell 的当前目录。在脚本末尾生成新 shell 是我唯一的选择吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com