Подтвердить что ты не робот

В bash, как мне присоединиться к параметрам N вместе как строка

Я пытаюсь написать функцию, которая принимает n параметров и присоединяет их к строке.

В Perl это будет

my $string = join(' ', @ARGV);

но в bash Я не знаю, как это сделать

function()
{
    ??
}
4b9b3361

Ответ 1

Проверьте справочную страницу bash для записи для '*' в разделе Специальные параметры.

join () {
    echo "$*"
}

Ответ 2

Для немедленного вопроса chepner answer ("$*") проще всего, но как пример того, как это сделать, обращаясь к каждому аргументу по очереди:

func(){
    str=
    for i in "[email protected]"; do 
        str="$str $i"
    done
    echo ${str# }
}

Ответ 3

Это ведет себя как Perl join:

#!/bin/bash

sticker() {
  delim=$1      # join delimiter
  shift
  oldIFS=$IFS   # save IFS, the field separator
  IFS=$delim
  result="$*"
  IFS=$oldIFS   # restore IFS
  echo $result
}

sticker , a b c d efg 

Вышеуказанные выходы:

a,b,c,d,efg

Ответ 4

Подобно perreal-ответу, но с подоболочкой:

function strjoin () (IFS=$1; shift; echo "$*");
strjoin : 1 '2 3' 4
1:2 3:4

Соединение Perl может разделяться более чем одним символом и достаточно быстро используется с bash (напрямую или с помощью псевдонима или обертки функций)

perl -E 'say join(shift, @ARGV)'  ', '   1 '2 3' 4
1, 2 3, 4