第 24 行:sudo:权限被拒绝

问题描述

我想创建一个包含写保护目录中的内容文件。我不知道为什么它说 line 24: sudo: Permission denied。请检查我的代码

echo $(wget -q -O - "$SOURCE") > sudo "$FILE";

在 Ubuntu 上测试过。

解决方法

该代码表示​​“将 wget 和 $FILE 的输出写入当前目录中名为 sudo 的文件”。

错误 #1:> 表示写入文件。您打算通过管道传送到 sudo

这就是导致错误的原因。您不是在运行 sudo,而是在编写一个名为 sudo 的文件。 (权限被拒绝,因为当前用户没有权限。)

错误 #2:sudo command 执行命令。你写了sudo $(FILE)。这意味着执行 $(FILE)

错误 #3:$(wget ...) 将对您获取的文档执行 shell 参数拆分等。如果获取的文档太长,则会溢出命令行缓冲区。可能错了。

我会这样做:

wget -q -O - "$SOURCE" | sudo tee "$FILE" > /dev/null

您也可以使用 dd -of="$FILE" 代替 tee "$FILE"> /dev/null 用于压缩 ddtee 写入标准输出的任何内容。

请注意,以下操作无效。命令解析和重定向由 非特权 用户 shell 完成。它无权打开 $(FILE) ...

# Simpler but incorrect
wget -q -O - "$SOURCE" | sudo cat > "$FILE"

警告:以上都没有经过测试!!