【问题标题】:cd: too many arguments - spaces properly escaped + quoted?cd:参数太多 - 正确转义的空格 + 引号?
【发布时间】:2019-02-26 19:55:32
【问题描述】:

使用 cygwin 终端,我的 .bashrc 中有以下内容:

export WINHOME="/cygdrive/c/Users/userName"
export TUTORING="$WINHOME/Desktop/Coding\ Projects/Tutoring/"

当我打开 cygwin 时,会发生以下情况:

$ cd $TUTORING
-bash: cd: too many arguments

然后我尝试了:

$ echo $TUTORING
/cygdrive/c/Users/userName/Desktop/Coding\ Projects/Tutoring

从 echo 复制粘贴输出:

cd /cygdrive/c/Users/userName/Desktop/Coding\ Projects/Tutoring 

这似乎有效。知道为什么 cd 我的变量有问题吗?

【问题讨论】:

    标签: cygwin


    【解决方案1】:

    分词发生在变量扩展之后。来自man bash:

    shell扫描双引号内未出现的参数扩展、命令替换和算术扩展的结果进行分词。

    shell 将 IFS 的每个字符视为分隔符,并将其他扩展的结果拆分为使用这些字符作为字段终止符的单词。

    正确的方法是使用双引号:

    export TUTORING="$WINHOME/Desktop/Coding Projects/Tutoring/"
    cd "$TUTORING"
    

    【讨论】:

      【解决方案2】:

      使用双引号转义整个路径。

      因为path里面有空格,所以cd命令认为有几个参数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-25
        • 2013-07-22
        • 1970-01-01
        • 1970-01-01
        • 2020-09-18
        • 2018-01-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多