2

为什么第一个扩展不起作用,而第二个扩展呢?

我知道波浪号必须在引号之外展开,但斜线也必须在外面,出乎意料。

#!/bin/bash
ls ~"/Documents/bashscripts/test.sh"
ls ~/"Documents/bashscripts/test.sh"
4

1 回答 1

5

这是波浪号扩展如何工作的一个微妙之处。在第二种情况下,波浪号后跟斜杠扩展为当前用户的主目录。在第一种情况下,波浪号后跟引号的单词被尝试扩展到名为“/Documents/bashscripts/test.sh”的用户的主目录。从手册页,波浪号扩展部分:

…第一个不带引号的斜杠之前的所有字符都被认为是波浪号前缀。如果波浪号前缀中没有任何字符被引用,波浪号后面的波浪号前缀中的字符将被视为可能的登录名。…</p>

于 2014-06-23T17:45:33.010 回答