我正在尝试编写一个带有 n 参数的函数,并将它们连接成一个字符串。
在Perl中它将是
my $string = join(' ', @ARGV);
但在bash中我不知道该怎么做
function()
{
??
}
答案 0 :(得分:29)
在特殊参数下检查bash
手册页中的“*”条目。
join () {
echo "$*"
}
答案 1 :(得分:9)
对于直接问题,chepner's answer("$*"
)最简单,但作为如何依次访问每个参数的示例:
func(){
str=
for i in "$@"; do
str="$str $i"
done
echo ${str# }
}
答案 2 :(得分:7)
这个行为类似于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
答案 3 :(得分:5)
与perreal的答案类似,但有一个子shell:
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