带有波浪号的 Bash 前缀字符串以扩展到主目录

ber*_*nie 4 linux script bash string-manipulation

我不知道如何在字符串(例如“user1”)前加上波浪号(~)来生成~user1并将其扩展到 user1 的主目录。

这是我现在所拥有的:

USER="user1"
ls ~${USER}
ls: cannot access ~user1: No such file or directory
Run Code Online (Sandbox Code Playgroud)

~user1没有被扩展。我怎样才能实现它?

编辑

这不起作用:

$ cat test.sh
USER="user1"
ls $(~$USER)

$ sh -x test.sh
+ USER=user1
+ ~user1
test.sh: 1: ~user1: not found
+ ls
test.sh
Run Code Online (Sandbox Code Playgroud)

ter*_*don 6

如果您的用户目录不是简单的/home/user,您可以eval在您的脚本()中使用:

USER_HOME=$(eval echo ~${USER})
echo ${USER_HOME}
Run Code Online (Sandbox Code Playgroud)