【问题标题】:How to add path with space in Bash variable如何在 Bash 变量中添加带空格的路径
【发布时间】:2017-05-04 15:44:39
【问题描述】:

如何在.bashrc 的 Bash 变量中添加带空格的路径?我想在.bashrc 中存储一些变量作为路径,我遇到了一个带有空格的路径。

我尝试在' ' 之间添加它或使用转义字符\,但没有帮助:

games=/run/media/mohamedRadwan/games\ moves    # this doesn't work
games='/run/media/mohamedRadwan/games  moves'  # or this
games="/run/media/mohamedRadwan/games  moves"  # or this

...当我跑步时:

mount $games

...它抛出一个错误,表明它只是试图挂载/run/media/mohamedRadwan/games

但是当我运行echo $games 时,它会显示完整的值/run/media/mohamedRadwan/games moves

我该如何解决这个问题?

【问题讨论】:

  • 总是,总是,总是引用变量取消引用:echo "$games"
  • (...除非您的变量包含模式或正则表达式并且位于比较的右侧或=~ in [[ ]] ;) )
  • @BenjaminW.:在[[ 中你根本不需要"
  • @BenjaminW。或者您只是希望它遵守 shell 规则的任何情况。
  • @choroba 如果你想要文字匹配,你可以这样做

标签: bash terminal


【解决方案1】:
mount /dev/sda9 "$games"

如前所述,始终引用变量取消引用。否则,shell 会将变量值中的空格混淆为分隔多个值的空格。

【讨论】:

    【解决方案2】:

    当变量包含空格时,变量扩展再分词会产生很多参数,echo 命令将显示所有参数,但其他程序或函数可能会以另一种方式处理参数。

    用双引号括起来的变量将防止参数被拆分

    printf "'%s'\n" $games
    
    printf "'%s'\n" "$games"
    

    【讨论】:

      猜你喜欢
      • 2014-05-18
      • 1970-01-01
      • 2017-02-01
      • 2015-06-09
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      相关资源
      最近更新 更多