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
我的脚本有什么问题?
谢谢你
单引号字符串不能包含其他单引号,因此该awk
命令将解释为Shell命令。将命令放在变量中是棘手的,通常,创建函数更容易,更安全且更具可读性:
nOption() {
awk '{total+=$1} END {print total/1024"kb"}'
}
find . -type f -printf "%s %p/n"| sort -nr | head -n10 | nOption
对于这种特定的情况,如@chepner所指出的那样,问题在于您不能将命令分隔符(例如,|
放在字符串中)然后作为管道的一部分执行(没有eval
,这是邪恶的)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句