下面是一个简单的脚本a.sh
#name: a.sh
user=$(whoami)
sudo runuser -l test2 -c 'touch /home/test2/$user.file'
我正在尝试将当前用户的用户名保存test1
在变量中user
,并将/home/test2
目录中的文件作为 user test2
。脚本没有错误返回,但没有生成名为test1.file
. /home/test2
看了一圈,发现里面有个.file
文件/home/test2
。这意味着在进入test2
's shell 环境后,$user
变量没有得到解决。
如何解决?
命令行
$user
上的扩展发生在命令执行之前。在该时间点处于活动状态的环境中(很可能已被 清除),其值未定义,因此扩展为空字符串。这是您从中获取文件的地方。sudo
touch
sudo
.file
touch
要使用正确的名称创建文件,请在命令周围使用双引号。这将确保在调用之前$user
展开:sudo
注意:我不知道是什么
runuser
。我会用