![使用脚本文件创建文件时出现权限被拒绝错误](https://linux22.com/image/856352/%E4%BD%BF%E7%94%A8%E8%84%9A%E6%9C%AC%E6%96%87%E4%BB%B6%E5%88%9B%E5%BB%BA%E6%96%87%E4%BB%B6%E6%97%B6%E5%87%BA%E7%8E%B0%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D%E9%94%99%E8%AF%AF.png)
我已经创建了一个名为黑名单。
#!/bin/bash
default_card=`head -1 /proc/asound/modules`
echo $default_card
if [ ! -e /etc/modprobe.d/sound.blacklist.conf ] && [[ "$default_card" =~ "snd_hda_intel" ]]; then
echo "blacklist snd_hda_intel" > /etc/modprobe.d/sound.blacklist.conf ---> not working
else
echo "Default sound card(snd_hda_intel) is already added in black list";
fi
从我正在创建的这个脚本文件声音.黑名单.conf文件/etc/modprobe.d
但出现/etc/modprobe.d/sound.blacklist.conf: Permission denied
错误。
所以尝试
echo itsme | sudo -S echo "blacklist snd_hda_intel" > /etc/modprobe.d/sound.blacklist.conf
但它也没有用,那么如何/etc/modprobe.d
从我的目录中创建一个文件脚本文件。
答案1
我个人建议使用 tee,您可以以 root 身份运行它来附加到文件:
echo "blacklist snd_hda_intel" | sudo tee -a /etc/modprobe.d/sound.blacklist.conf
但在脚本进行到一半时可能不需要这样做。如果您正在执行需要 root 权限的操作,那么可能 — — 我不是绝对这么说 — — 更合理的做法是只让 root 运行脚本,方法是将其放在脚本顶部附近:
if [[ $EUID -ne 0 ]]; then
echo "Only root can run this. Run again with sudo" 2>&1
exit 1
fi
答案2
尝试这个命令,
sudo sh -c "echo 'blacklist snd_hda_intel' > /etc/modprobe.d/sound.blacklist.conf"
答案3
您还必须将输出重定向纳入其中sudo
。
对我来说,最简单的方法就是不要把须藤在你的脚本中,但要使用须藤。
为了理解您的问题,如果您有以下命令:$ sudo " " > /etc/file
这须藤动作只是执行<command> <params>
,输出的重定向(>
)发生在须藤在这种情况下。