我想创建一个由变量值指定的目录。首先让我们确保可以通过最简单的命令创建该目录:
$ mkdir ~/opt
[ec2-user@ip-172-31-15-193 ~]$ ls ~/opt
[ec2-user@ip-172-31-15-193 ~]$ ls -l ~/opt
total 0
使用变量代替硬编码路径的语法是什么?以下是已尝试的方法:
$ BDIR="~/opt"
$ mkdir $BDIR
mkdir: cannot create directory ‘~/opt’: No such file or directory
还:
$ mkdir "$BDIR"
mkdir: cannot create directory ‘~/opt’: No such file or directory
答案1
通常情况下,你所做的是有效的。但这里是“~”字符欺骗了你。
您不能在 bash 提示符之外使用“~”,因为它是shell 扩展。
您需要明确使用$HOME
变量:
BDIR="$HOME/opt"
或者您可以省略引号,这样 BDIR 分配将分配给扩展路径,并且它将起作用:
BDIR=~/opt
(如果需要,您可以使用斜线 - 来转义空格BDIR=~/path\ with\ spaces
)。
或者,正如@Attie 建议的那样,将波浪号放在引号外面:
BDIR=~"/opt"