当前位置: 首页 > 知识库问答 >
问题:

如何用分隔符连接参数?[重复]

幸弘扬
2023-03-14

在bash中,如何将函数的参数连接到单个字符串中?

分隔符是固定的,不是空格(因此“$*”不是我想要的)。这里使用“,”作为示例。

join_args() {
# join args with sep ", ", then echo the joined string
# ... code here
}

join_args abc def ghi
# abc, def, ghi

共有3个答案

栾鸣
2023-03-14
#!/usr/bin/env bash

join_args() {
  count=$#
  for i in `seq 1 $count`
  do
   if [[ $i = $count ]]
   then
     joined+=("$1")
   else
    joined+=("$1,")
    shift
   fi
  done
echo ${joined[*]}
}

join_args abc def ghi sfl ugw pwg afm

输出:

abc, def, ghi, sfl, ugw, pwg, afm
海新霁
2023-03-14

您可以尝试:

$ function join_by { local IFS="$1"; shift; echo "$*"; }

然后通过以下方式使用:

$ join_by , abc def ghi
abc,def,ghi

如果你想要在“, ”之后的额外空间,我想使用 sed

$ join_by , abc def ghi | sed -e 's/,/, /g'
abc, def, ghi

或者,您可以使用<code>printf</code>进行参数扩展,从而:

$ function join_by { local d=$1; shift; echo -n "$1"; shift; printf "%s" "${@/#/$d}"; }
$ arr=( abc def ghi "kl mn op" )
$ echo $(join_by ", " "${arr[@]}")
abc, def, ghi, kl mn op
麹渊
2023-03-14

如果设置了$IFS,< code>$*可以使用空格以外的字符,但它只能使用一个字符。因此

join_args() {
    local IFS=', '
    echo "${*}"
}

输出abc, def, ghi

如果需要更长的分隔符,则必须使用循环:

join_args() {
    while (($# > 1)) ; do
        printf '%s, ' "$1"
        shift
    done
    if (($#)) ; then
        printf '%s\n' "$1"
    fi
}

或者,使用真正的编程语言

perl -E 'say join ", ", @ARGV' abc def ghi
 类似资料:
  • 我怎么能这么做? PS:是的,我知道这篇文章和这篇文章,但它的解决方案不能用原语数组。

  • 问题内容: 假设我有一个数组: 而且我需要使用分隔符(例如)来连接其元素,因此结果应该是这样的字符串: 我该怎么办? PS: 是的,我知道这件事和这篇文章,但是它的解决方案不适用于一系列原语。 问题答案: 这是我想出的。有几种方法可以执行此操作,它们取决于您使用的工具。 使用和来自Common Lang : 您不能只使用它,因为它没有方法的重载版本。虽然,它有方法。 适用于1.2以上的任何Java

  • 我正在尝试用不同的令牌连接多个Pandas DataFrame列。 例如,我的数据集如下所示: 我不想修改原始的DataFrame,所以创建了两个新的DataFrame: 有一个问题,我面临,它是添加<2>最后,但我想要像上面的输出,而且这不是熊猫的方式来做这个任务,我如何使它更有效率?

  • 我正在构建一个名为“id”的查询参数,它是一个列表,所以我有类似于localhost:8080/application?id=1 (我知道我的方法不够,我需要写第一个?id=) 方法 我的问题是:为什么我收到这个错误在Collectors.joining(" 我正在使用OpenJDK

  • 问题内容: 在大量的Unicode字符中,有一些实际上代表多个字符,例如U + FB00连字ff表示两个’f’字符。有什么容易的方法可以将这样的字符转换成多个单个字符?最好是在标准Java API中可用的东西,但是如果需要,我可以引用一个外部库。 问题答案: U + FB00是兼容字符。通常,Unicode不支持连字的单独代码点(认为是否使用连字以及何时使用连字是布局决定,并且不影响数据的存储方式)

  • 我将立即承认我是一个java开发人员,正在寻找一个类似于DecimalFormat的函数,类似于: 代码改编自Oracle javase i18n 我能找到的与此相关的每个资源要么只是格式化(而不是解析) 如何为Angular 4中的数字管道指定千位分隔符 NativeScript:格式化数字类型脚本 或者人们使用正则表达式替换(这在我看来很疯狂) 如何将带有逗号千分隔符的字符串解析为数字? 或一