变量扩展,包括别名定义内的空格

时间:2019-03-14 16:10:04

标签: bash zsh

我敢肯定我在这里遗漏了一些明显的东西。由于与问题无关的原因,我在.bashrc和.zshrc中包含以下代码(但我可以解释为什么需要此原因,不是秘密,只是不相关):

export LS_OPTIONS="-lAhF --color=auto --group-directories-first --time-style=+%Y-%m-%d\ %H:%M:%S"
alias ls='ls $LS_OPTIONS'

当我运行ls别名时,出现以下错误:

ls: cannot access '%H:%M:%S': No such file or directory

很明显,别名没有在--time-style选项的中间保留反斜杠。显然,我尝试过使用大量不同的引用样式来使反斜杠或空格保留在那里,但无济于事。

更糟糕的是,该解决方案必须同时在 Zsh和Bash中使用,因此我无法使用任何棘手的参数扩展。

我真的精通shell脚本已有好几年了,所以我已经忘记了所有繁琐的技巧,但是我有一种感觉,我想念这里显然的解决方案。

预先感谢,在等待答复时,我将继续尝试不同的报价机制,以查看自己是否找到解决方案。

2 个答案:

答案 0 :(得分:2)

尝试将您的选项放入数组中:

export LS_OPTIONS=( -lAhF --color=auto --group-directories-first --time-style=+%Y-%m-%d\ %H:%M:%S)

然后将其用作:

alias ls='ls "${LS_OPTIONS[@]}"'

答案 1 :(得分:1)

使用“而不是”

export LS_OPTIONS="-lAhF --color=auto --group-directories-first --time-style=+%Y-%m-%d\ %H:%M:%S"
alias ls="ls $LS_OPTIONS"

变量展开仅适用于“