![Ubuntu bash 回显“$PASSWORD”| sudo -S WID=$(cat /var/lib/FILE)](https://linux22.com/image/138862/Ubuntu%20bash%20%E5%9B%9E%E6%98%BE%E2%80%9C%24PASSWORD%E2%80%9D%7C%20sudo%20-S%20WID%3D%24(cat%20%2Fvar%2Flib%2FFILE).png)
/var/lib/FILE root:root 0600(一行文本)
如何将 /var/lib/FILE 读入 $WID
echo "$PASSWORD" | sudo -S WID=$(cat /var/lib/FILE) not working for me.
答案1
如果您需要当前 shell 中的变量中的文件内容,则上述方法将不起作用,因为分配是在子 shell 中完成的,并且在退出子 shell 后会丢失(诚然,有些 shell 不会丢失变量)。
为了sudo
工作,您需要有一个sudoers
允许您运行命令的条目。变量赋值不是命令,因此上面的操作将再次失败。
如果您希望将文件的内容存储在变量中,但没有读取该文件的权限,请尝试
WID=$(echo "a" | sudo -S cat /var/lib/FILE)