首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Linux shell中,如何处理多行字符串的每一行?

在Linux shell中,如何处理多行字符串的每一行?
EN

Stack Overflow用户
提问于 2011-02-19 23:10:54
回答 4查看 43.5K关注 0票数 31

而在Linux shell中,我有一个字符串,它包含以下内容:

代码语言:javascript
复制
cat
dog
bird

我想把每一项都作为参数传递给另一个函数。我该怎么做呢?

EN

回答 4

Stack Overflow用户

发布于 2011-02-19 23:18:45

只需将字符串传递给您的函数:

代码语言:javascript
复制
function my_function
{
    while test $# -gt 0
    do
        echo "do something with $1"
        shift
    done
}
my_string="cat
dog
bird"
my_function $my_string

为您提供:

代码语言:javascript
复制
do something with cat
do something with dog
do something with bird

如果您真的关心将其他空格用作参数分隔符,请首先设置您的IFS

代码语言:javascript
复制
IFS="
"
my_string="cat and kittens
dog
bird"
my_function $my_string

要获得以下信息:

代码语言:javascript
复制
do something with cat and kittens
do something with dog
do something with bird

在此之后,不要忘记使用unset IFS

票数 9
EN

Stack Overflow用户

发布于 2011-02-20 02:18:30

如果您使用bash,则只需设置IFS:

代码语言:javascript
复制
$ x="black cat
brown dog
yellow bird"
$ IFS=$'\n'
$ for word in $x; do echo "$word"; done
black cat
brown dog
yellow bird
票数 6
EN

Stack Overflow用户

发布于 2016-05-07 06:02:49

使用xargs

根据您想要对每一行执行的操作,它可以像下面这样简单:

代码语言:javascript
复制
xargs -n1 func < file

或者更复杂的使用:

代码语言:javascript
复制
cat file | xargs -n1 -I{} func {}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5051556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档