如何在 bash 中回显所有大于 2 个字符的参数?

如何在 bash 中回显所有大于 2 个字符的参数?

我有以下内容

#!/bin/bash
function f1 ()
{
  echo "all parameters with more than 2 characters"
}
f1 123 45 6789

我需要对字符大于 2 的参数执行某些操作。我可以回显它们吗不扩展“$@”到循环然后进行检查wc -c 在这种情况下,我需要输出123 6789

答案1

你不需要扩张 $@但你应该循环它:

for arg in "$@"
do
  [ "${#arg}" -gt 2 ] && printf '%s\n' "$arg"
done

${#arg}代码询问 的长度(以字节为单位)$arg

答案2

#!/bin/bash
f1(){
     tr -s " " "\n" <<< "$@"| grep ...|tr -s "\n" " "
}

答案3

使用以下方法更容易zsh

#! /bin/zsh -
f1() print -r -- ${(M)@:#???*}

${array:#pattern}是从数组的扩展中删除与模式匹配的元素(${var#pattern}/ ${var##pattern}ksh 运算符的扩展)。带有M参数扩展标志(对于匹配的),则相反,仅保留匹配的内容。

答案4

无需外部命令(wc);尝试在循环中使用“参数扩展/参数长度”。

相关内容