我正在尝试为我的个人资料中名称中包含空格的目录创建一个变量。
它看起来像:
variable=/path/to/directory/with space/; export $variable
我尝试了下面的许多不同的变体,其中一些我可能忘记添加:
variable=/path/to/directory/"with space/"; export $variable
variable=/path/to/directory/"with\ space/"; export $variable
variable="/path/to/directory/with space/"; export $variable
variable='/path/to/directory/with space/'; export $variable
variable='/path/to/directory/with\ space/'; export $variable
variable=""/path/to/directory/with space/""; export $variable
variable="'/path/to/directory/with space/'"; export $variable
variable=/path/to/directory/with\ space/; export $variable
variable=/path/to/directory/with\\ space/; export $variable
variable=/path/to/directory/with\\\ space/; export $variable
variable=/path/to/directory/with\\\\ space/; export $variable
我可以让它与上述版本之一一起工作,但我必须引用变量,即ls "$variable"
。这很有效,也很好,但我想知道是否有人知道有什么方法可以让它工作而不必引用变量?
答案1
为了分配变量,这些将起作用:
VARIABLE="/path/to/directory/with space" # Preferred way
VARIABLE='/path/to/directory/with space'
VARIABLE=/path/to/directory/"with space"
VARIABLE=/path/to/directory/'with space'
VARIABLE=/path/to/directory/with" "space
VARIABLE=/path/to/directory/with' 'space
VARIABLE=/path/to/directory/with\ space
为了出口它,您需要使用它的名称(VARIABLE
),而不是它的内容($VARIABLE
)。
export VARIABLE
或者在一行中完成分配和导出:
export VARIABLE="/path/to/directory/with space"
为了使用它,你应该总是引用它,以避免单词分裂(以及其他情况下的单词通配)。
ls "$VARIABLE"
另外,我在这里用大写字母写了这个名字,因为这就是惯例对于环境变量(和 shell 变量,如RANDOM
)。我省略了尾部斜杠,因为不需要它,而且在某些情况下可能会造成混淆,但这更多是个人喜好。