这是我的代码:
#!/bin/sh
sudo touch /home/test/hello.txt
sudo chmod 777 /home/test/hello.txt
sudo touch /home/test/hello1.txt
sudo chmod 777 /home/test/hello1.txt
"$(sudo du -hs /home/test/*)" >> /home/test/hello.txt
"$(sudo sort -n /home/test/hello.txt)" >> /home/test/hello1.txt
head -3 /home/test/hello1.txt
在第7行,它给出了错误:权限被拒绝。 我已经制作了两个文件chmod 777,所以我不知道它来自哪里。
感谢您的任何建议!
答案 0 :(得分:6)
从$()
和du
行中移除sort
,使它们像这样:
sudo du -hs /home/test/* >> /home/test/hello.txt
sudo sort -n /home/test/hello.txt >> /home/test/hello1.txt
$()
获取括号内的操作结果,并尝试将其作为命令执行。如果此结果不是可以运行的结果,您将收到各种错误消息。
许可被拒绝即将到来,因为$()
内部的任何结果恰好出现在你的机器上也恰好是你无法执行的事情。在我对您的脚本的测试中,我还得到了Is a directory
和command not found
。它实际上与hello.txt
或hello1.txt
的模式无关。
我应该提一下,我并不完全确定您正在寻找的结果,因此进行上述更改可能会也可能无法满足您的需求。但是,该脚本现在将运行,为du
提供原始hello.txt
结果,并在hello1.txt
中提供各种排序结果。如果您尝试从最小磁盘使用量到最大磁盘使用列表,则可能需要稍微调试排序(提示:尝试从-h
中取消du
)。