bashrc - 带有空格的变量

时间:2012-07-09 10:27:22

标签: bash variables spaces

我想在我的.bashrc中设置类似的内容

export p1=`eval echo ~/projects/customer name/project name`
export p2=`eval echo ~/projects/customerb name/project name`

由于空格而导致cd $p1输入失败我找到目录未找到问题。

我知道输入cd "$p1"(带有变量的语音标记的)可以正常工作。

如何正确设置我的变量以便我可以做这样的事情......

cd $p2
cp $p1/file $p2/
open $p1/lib 

... 没有每次都输入语音标记?

提前致谢,
尼克

2 个答案:

答案 0 :(得分:3)

这不是一个好主意。你应该学会处理shell,而不是依靠黑客来获得你觉得更美观的行为。

也就是说,在分配IFS

时,您可以通过从p1变量中删除空格来达到所需效果

样品:

IFS= p1="/path with/some/spaces in/it"
ls -l $p1

现在不言而喻,但无论如何我要说清楚,你不应该取消IFS并保持这种状态;大部分时间结果都不符合您的预期。您应该仅针对特定命令执行此操作。

此外,您要寻找的术语是“双引号”,而非“语音标记”。当谷歌搜索,提问和搜索文档时,最好使用正确的术语。

编辑:

复制粘贴友好版:

IFS= export p1="$HOME/projects/customer name/project name"
cd $p1

答案 1 :(得分:-2)

您可以通过创建一个为您设置引号的函数来轻松完成此操作:

cdd(){
    command cd "$*"
}

现在,如果你输入

ps1="some path /with lots /of spaces/"
cdd $ps1

这确实会表现出理想的行为。

请注意(如其他评论中所示)如果$p1中的路径名包含空格以外的特殊字符,可能无法正常工作 - 知道何时使用它之前使用它。