使用脚本文件创建文件时出现权限被拒绝错误

使用脚本文件创建文件时出现权限被拒绝错误

我已经创建了一个名为黑名单

#!/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>,输出的重定向(>)发生在须藤在这种情况下。

相关内容