В bash, как мне присоединиться к параметрам N вместе как строка
Я пытаюсь написать функцию, которая принимает n параметров и присоединяет их к строке.
В Perl это будет
my $string = join(' ', @ARGV);
но в bash Я не знаю, как это сделать
function()
{
??
}
Ответ 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
Соединение Perl может разделяться более чем одним символом и достаточно быстро используется с bash
(напрямую или с помощью псевдонима или обертки функций)