She*_*rry 6 linux bash shell scripting
我有一个成功运行此命令的脚本。我在另一个脚本中使用这个命令,它在这一行 ( .md5: Permission denied)上给了我错误。
我正在使用 sudo 运行之前的脚本。
for i in ${NAME}*
do
sudo md5sum $i | sed -e "s/$i/${NAME}/" > ${NAME}.md5${i/#${NAME}/}
done
Run Code Online (Sandbox Code Playgroud)
所以你想以 root 身份重定向输出。你用 执行命令没有关系sudo,因为重定向不是执行的一部分,所以它不是由命令的执行用户执行,而是由你当前的用户执行。
常见的技巧是使用tee:
for i in ${NAME}*
do
md5sum $i | sed -e "s/$i/${NAME}/" | sudo tee ${NAME}.md5${i/#${NAME}/}
done
Run Code Online (Sandbox Code Playgroud)
注意:我删除了sudofrom md5sum,因为您可能不需要它。
注意:tee输出两个方向:指定文件和标准输出。如果要抑制 stdout 上的输出,请将其重定向到/dev/null.