bash $1 函数内部命令

标签 bash function arguments

有人可以建议如何解决这种情况吗:

我用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/

相关文章:

linux - 用参数替换 bash 脚本中的部分命令

macos - 如果有一个冒号( :) in the directory name, 我怎么能把它添加到 $PATH?

linux - 参数替换 shell

mysql - 当密码为空时跳过 bash 脚本中的 mysql 密码

javascript - 这个正则表达式在 jQuery v1.11.0 中有何用途?

C++错误将参数重新发送到模板函数(矩阵参数)

scala - 带有默认参数的可变长度参数列表?

bash - shell bash - 返回码

python - 如何从我创建的函数创建循环和新数据集?

c++ - 函数原型(prototype)返回错误