所以我试图为我的树莓派创建一个安装脚本,第一件事是给它们一个静态IP。
echo -e "Enter static IP"
read static_ip
echo -e "Enter DNS IP"
read dns_ip
echo -e ""
echo -e "The following settings will be set"
echo -e "\e[32mStatic IP:\e[0m\t${static_ip}"
echo -e "\e[32mDNS IP:\e[0m\t${dns_ip}"
sudo echo "interface wlan0" >> /etc/dhcpcd.conf
sudo echo "static ip_address=${static_ip}/24" >> /etc/dhcpcd.conf
sudo echo "static routers=${dns_ip}" >> /etc/dhcpcd.conf
sudo echo "static domain_name_servers=${dns_ip}" >> /etc/dhcpcd.conf
Run Code Online (Sandbox Code Playgroud)
但它一直说“权限被拒绝”,我想知道我在这里做错了什么?
重定向sudo echo \xe2\x80\xa6 >> \xe2\x80\xa6( >>) 是由 shell 在sudo启动之前设置的。如果echo要自己打开文件,它可以;但它将从继承的 stdout 开始sudo,而 stdout 又从调用 shell 设置的 stdin 开始。您收到的错误意味着 shell 被拒绝访问该文件。
使用sudo tee。重点是tee可以自己打开文件:
echo "something" | sudo tee -a /output/file > /dev/null\nRun Code Online (Sandbox Code Playgroud)\n这种方式tee会将 ( -a) 文本附加到/output/file具有适当权限的文件中。
tee旨在传递其输入并复制它(通常:乘法)。在这种情况下,一份副本进入文件,另一份则沿着管道传输。由于我们只需要第一个副本,因此我们将第二个副本重定向到,/dev/null以便它不会出现在控制台中。一切会/dev/null消失。
| 归档时间: |
|
| 查看次数: |
1220 次 |
| 最近记录: |