gpt4 book ai didi

Bash:对包含空格的变量使用 cd 命令

转载 作者:行者123 更新时间:2023-12-05 08:57:44 26 4
gpt4 key购买 nike

我正在尝试更改脚本中的目录,以便使用相对路径执行一系列操作。该文件夹是一个名为 $input_path 的变量:

cd $(echo "$input_path")

如果变量中有空格,例如“/home/user/test directory/subfolder”,脚本会返回错误:

./test_currently_broken.sh: line 86: cd: "/home/user/test: No such file or directory

我尝试了各种方法来逃避空格:

# escape spaces using backslashes, using sed
input_path=$(echo "$input_path" | sed 's/ /\\ /g')

# wrap input path with awk to add quotes
input_path=$(echo "$input_path" | awk '{print "\"" $0 "\""}')

# wrap in single quotes using sed
input_path=$(echo "$input_path" | sed -e "s/\(.*\)/'\1'/")#

但没有人修复错误 - 它仍然无法更改目录。我已确认它试图更改为 definitely 的目录存在,并且 cding 在此脚本之外工作。

cd 的这种奇怪行为是否有解决方案?

最佳答案

你为什么不...

cd "$input_path"

既然是引用,就不会有空格的问题。

通过说 cd $(echo "$input_path") 你实际上是在说 cd my path,而你想做 cd "my path"。因此,正如下面 JID 所评论的,您也可以说 cd "$(echo $input_path)" 因为重要的引用是那些与 cd “更接近”的引用。


如果不引用,cd 会看到:

cd my path

所以它会尝试cd my,而如果你引用它会看到:

cd "my path"

关于Bash:对包含空格的变量使用 cd 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29820673/

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