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?
外壳进行波浪号扩展。readlink
没有。Bash 不会在引号内扩展波浪号。
readlink -f $a
不做你想做的事,因为波浪号扩展发生在变量扩展之前,即变量被扩展为~
,但波浪号不会进一步扩展。
Bash 做事的顺序是:大括号扩展、波浪号扩展、参数和变量扩展、命令替换、算术扩展、分词和路径名扩展。
$HOME
在某些情况下,使用可能比使用波浪号更可取,因为它的行为与任何其他变量一样。
另外,请不要以root身份登录...