读取链接文字与变量

fcm*_*fcm 4 shell bash quoting variable-substitution tilde

使用 BASH:答案可能很明显,但不适合我。

> echo $PWD
/root/fcm
> readlink -f ~
/root
> # but then with a variable or literal
> a='~'
> readlink -f $a
/root/fcm/~
> readlink -f "~"
/root/fcm/~
Run Code Online (Sandbox Code Playgroud)

我期待收到'/root/';
谁在进行替换 bash 或 readlink?

Kus*_*nda 9

外壳进行波浪号扩展。readlink没有。Bash 不会在引号内扩展波浪号

readlink -f $a不做你想做的事,因为波浪号扩展发生在变量扩展之前,即变量被扩展为~,但波浪号不会进一步扩展。

Bash 做事的顺序是:大括号扩展、波浪号扩展、参数和变量扩展、命令替换、算术扩展、分词和路径名扩展。

$HOME在某些情况下,使用可能比使用波浪号更可取,因为它的行为与任何其他变量一样。

另外,请不要以root身份登录...