bash - 带有空格的 Mac OS shell 脚本 cd 文件夹不起作用

标签 bash macos shell escaping

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

这是我的脚本:

#!/bin/bash

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

echo dest is $DEST
cd $DEST

这是我的输出:

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

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

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

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

希望有人能帮忙

问候,

拉尔夫

最佳答案

只是做:

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

cd "$DEST"

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

cd $DEST

=>

cd /Volumes/Ext 1TB/Google Drive/Backup Ralph/mac

HTH

附言我假设您问题中的弯引号“”只是一个自动更正的拼写错误,您知道使用直引号“”

关于bash - 带有空格的 Mac OS shell 脚本 cd 文件夹不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41988083/

相关文章:

node.js - 如何使用nodejs运行shell脚本文件?

json - 如何在 Linux 上使用 shell 脚本解析 JSON?

string - 在第 n 个参数之后获取所有参数并在 bash 中将它们连接在一起

shell - Erlang:服务器光标卡在命令行上?

bash - Zsh 和 Bash 中的 Alt+数字+点和 Alt+逗号

java - 无法在 El Capitan 上切换到 Java 1.6

java - Keytool 给出非法选项错误 : -alias

ios - 是否可以在 XCODE 中无线或不连接 USB 电缆调试应用程序?

linux - 根据其退出代码 bash 脚本将命令重定向到变量或文件?

linux - LINUX 中的替换模式