Mac os shell 脚本 cd 文件夹,空格不起作用

Ral*_*per 2 macos bash shell escaping

在我开始之前,请不要咬我的头我知道这个问题在这里和其他论坛上已经被问过很多次了,但是我无法让这个简单的 shell 脚本工作。

这是我的脚本:

#!/bin/bash

DEST=“/Volumes/Ext\ 1TB/Google\ Drive/Backup\ Ralph/mac”

echo dest is $DEST
cd $DEST
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

bash -x gdrive.sh 
+ DEST='“/Volumes/Ext 1TB/Google Drive/Backup Ralph/mac”'
+ echo dest is $'?\200\234/Volumes/Ext' 1TB/Google Drive/Backup $'Ralph/mac?\200\235'
dest is “/Volumes/Ext 1TB/Google Drive/Backup Ralph/mac”
+ cd $'?\200\234/Volumes/Ext' 1TB/Google Drive/Backup $'Ralph/mac?\200\235'
gdrive.sh: line 6: cd: “/Volumes/Ext: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我尝试了很多组合,比如单引号或双引号,或者用反斜杠或双引号转义并用反斜杠转义

如果我在我的变量周围加上双引号,输出会给我一些数字,正如你在我的例子中看到的那样。

有人知道转义引号的正确用法和组合是什么吗?

我希望有人能帮帮忙

问候,

拉尔夫

CRD*_*CRD 5

做就是了:

DEST="/Volumes/Ext 1TB/Google Drive/Backup Ralph/mac"

cd "$DEST"
Run Code Online (Sandbox Code Playgroud)

您需要行中的引号,cd因为 的值$DEST只是插入到命令行中,没有它们会产生 4 个参数cd

cd $DEST
Run Code Online (Sandbox Code Playgroud)

=>

cd /Volumes/Ext 1TB/Google Drive/Backup Ralph/mac
Run Code Online (Sandbox Code Playgroud)

HTH

PS我假设你的问题中的卷曲引号“”只是一个自动更正的错字,你知道使用直引号,“”