gpt4 book ai didi

linux - unix shell 脚本变量声明 - 找不到命令

转载 作者:太空狗 更新时间:2023-10-29 11:44:47 24 4
gpt4 key购买 nike

nOption=' | awk '{total+=$1} END {print total/1024"kb"}' '
find . -type f -printf "%s %p/n"| sort -nr | head -n10 $nOption

我想创建一个脚本来查找当前目录中最大的文件。这是我的脚本,如果我使用变量来替换会出错....

输出:./big.sh:第 67 行:+=:找不到命令

但如果我不使用变量它会起作用:

find . -type f -printf "%s %p/n"| sort -nr | head -n10 | awk '{total+=$1} END {print total/1024"kb"}' 

输出是我想要的:680.021kb

我的脚本有什么问题??

谢谢

最佳答案

Single quoted strings不能包含其他单引号,因此 awk 命令被解释为 shell 命令。 Putting commands in variables是棘手的,一般来说,创建一个函数更容易、更安全、更易读:

nOption() {
awk '{total+=$1} END {print total/1024"kb"}'
}
find . -type f -printf "%s %p/n"| sort -nr | head -n10 | nOption

对于这种特定情况,正如@chepner 指出的那样,问题是您不能将命令分隔符(例如|)放入字符串中,然后将其执行为管道的一部分(没有 eval, which is evil )。

关于linux - unix shell 脚本变量声明 - 找不到命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23288100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com