Bash 脚本变量语法:对于某些命令有效,对于其他命令则无效

Bash 脚本变量语法:对于某些命令有效,对于其他命令则无效

我不明白这个变量的行为:

SSH_CONFIG_FILE="~/.ssh/config"
echo $SSH_CONFIG_FILE
ls -l $SSH_CONFIG_FILE
ls -l ~/.ssh/config

这是输出:

~/.ssh/config
ls: cannot access '~/.ssh/config': No such file or directory
-rw------- 1 pm domain^users 1229 Sep 19 10:52 /home/pm/.ssh/config

为什么echo使用 $ 符号可以工作,但ls不行?

我尝试用“”、''、``、{}、[] 包围变量,但没有任何改进。

答案1

~如果您希望 shell 将其扩展到您的家,请不要在波浪号两边加上引号,因此:

SSH_CONFIG_FILE=~/.ssh/config

如果您有空间;做

var=~/'foo bar/file'

通过波浪号上的引号,您可以防止 shell 扩展它来处理字面上地

相关内容