下面是一个简单的脚本 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
shell环境后,该$user
变量未得到解析。
怎么解决呢?
命令行$user
上的扩展sudo
正好在touch
命令执行之前发生。在该时间点处于活动状态的环境中(很可能已被清除sudo
),其值是不确定的,因此扩展为空字符串。这是从中获取文件的.file
地方。
要使用适当的名称创建文件,请在touch
命令周围使用双引号。这将确保在调用之前进行$user
扩展: sudo
sudo runuser -l test2 -c "touch /home/test2/$user.file"
注意:我不知道是什么runuser
。我本来会用
sudo -u test2 touch "/home/test2/$user.file"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句