use*_*124 15 string bash arguments
我正在尝试编写一个带有n个参数并将它们连接成一个字符串的函数.
在Perl中它会是
my $string = join(' ', @ARGV);
Run Code Online (Sandbox Code Playgroud)
但在bash我不知道该怎么做
function()
{
??
}
Run Code Online (Sandbox Code Playgroud)
che*_*ner 29
bash在特殊参数下检查手册页中的"*"条目.
join () {
echo "$*"
}
Run Code Online (Sandbox Code Playgroud)
对于直接问题,chepner的答案("$*")是最简单的,但作为如何依次访问每个参数的示例:
func(){
str=
for i in "$@"; do
str="$str $i"
done
echo ${str# }
}
Run Code Online (Sandbox Code Playgroud)
这个行为像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
Run Code Online (Sandbox Code Playgroud)
以上输出:
a,b,c,d,efg
Run Code Online (Sandbox Code Playgroud)
与perreal的答案类似,但是有一个subshell:
function strjoin () (IFS=$1; shift; echo "$*");
strjoin : 1 '2 3' 4
1:2 3:4
Run Code Online (Sandbox Code Playgroud)
Perl的联接可以用多个字符分开,并且足够快地从bash中使用(直接使用别名或函数包装器)
perl -E 'say join(shift, @ARGV)' ', ' 1 '2 3' 4
1, 2 3, 4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10648 次 |
| 最近记录: |