有人可以建议如何解决这种情况吗:
我用arg调用函数:
funct $size
然后我需要在函数内运行 bash 命令
function funct {
arg=$1
files=(`find /var/ -mindepth 3 -maxdepth 3 -type d -exec du -bs {} \; | awk '$1>$arg'`)
}
问题出在 awk '$1>$arg'
我总是从 find-du
结果中得到 awk '$size>$size'
,而不是 $1
。
有人可以帮忙吗? 预先感谢您。
最佳答案
shell 不会展开 $arg
因为它是用单引号括起来的。对于 find-awk 管道,请尝试:
find /var/ -mindepth 3 -maxdepth 3 -type d -exec du -bs {} \; | awk -v arg="$arg" '$1>arg'
这里,-v arg="$arg"
创建一个名为 arg
的 awk 变量,并将 shell 变量 arg
的值赋给它>.
请注意,如果任何目录名称中包含空格,则数组 files
可能不是您所期望的。
关于bash $1 函数内部命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37407253/