我不知道如何在字符串(例如“user1”)前面加上波浪符号(~)来生成~user1
并扩展到 user1 的主目录。
以下是我现在所拥有的:
USER="user1"
ls ~${USER}
ls: cannot access ~user1: No such file or directory
~user1
未展开。我该如何实现?
编辑
这不起作用:
$ cat test.sh
USER="user1"
ls $(~$USER)
$ sh -x test.sh
+ USER=user1
+ ~user1
test.sh: 1: ~user1: not found
+ ls
test.sh
答案1
如果您的用户目录不是简单的/home/user
,您可以eval
在脚本中使用(来源):
USER_HOME=$(eval echo ~${USER})
echo ${USER_HOME}
答案2
这是让 bash 重新评估的通用方法,但使用 eval 可能更好,因为它不会产生新进程。(echo 内置于 bash,因此不是新进程)
user="user1"
bash -c "ls ~${user}"