在使用 Bash 5.0.17(1) 的远程 CentOS 中,我是唯一通过 SSH 执行的用户read web_application_root
:
$HOME/www
Run Code Online (Sandbox Code Playgroud)
或与:
${HOME}/www
Run Code Online (Sandbox Code Playgroud)
或与:
"${HOME}"/www
Run Code Online (Sandbox Code Playgroud)
或与:
"${HOME}/www"
Run Code Online (Sandbox Code Playgroud)
旨在获得具有扩展(环境)变量的输出,例如MY_USER_HOME_DIRECTORY/www
.
虽然ls -la $HOME/www
工作正常,但ls -la $web_application_root
所有示例都失败了;一个错误示例是:
ls: cannot access '$HOME/www': No such file or directory
Run Code Online (Sandbox Code Playgroud)
我知道read
将上述所有$HOME
变体视为字符串(由于错误中的单引号),因此不会扩展它。
如何在读取中扩展变量?
我了解任何字符都由一个或多个字节组成。
如果我没记错的话,至少在 *nix 操作系统中,一个字符通常(或完全?)仅由一个字节组成。
字节和字符(至少 *nixwise)有什么区别?
character-encoding special-characters terminology escape-characters byte
根据本手册 -r
为read
:
不允许反斜杠转义任何字符
我理解,通常情况下,read
shell 内置函数会获取输入并创建一个变量,该变量将该输入保存为一个字符串,其中反斜杠只是文字组件,无论如何都不会转义任何内容。
难道read -r
只有在罕见的例外usecases使用read
(与输出是的共同点东西比其他的字符串)?