如何在bash中的多行字符串变量的每一行上运行命令?

如何在bash中的多行字符串变量的每一行上运行命令?,bash,Bash,变量$type是一个多行字符串变量,包含: car plane 您可以通过发出echo“$type”获得上面的输出 我有一个some_命令,它使用$type作为参数之一 在bash中,您将如何执行某些命令,使其与$type的每一行一起依次运行?即,首先某些命令将使用car运行,然后使用plane再次运行,然后循环将在该行为空时停止,即没有要执行的值some_命令with 假设$type中的行除新行字符外不包含空格,请尝试: for line in $type; do echo working

变量
$type
是一个多行字符串变量,包含:

car
plane
您可以通过发出
echo“$type”
获得上面的输出

我有一个
some_命令
,它使用
$type
作为参数之一


在bash中,您将如何执行
某些命令
,使其与
$type
的每一行一起依次运行?
即,首先
某些命令
将使用
car
运行,然后使用
plane
再次运行,然后循环将在该行为空时停止,即没有要执行的值
some_命令
with

假设
$type
中的行除新行字符外不包含空格,请尝试:

for line in $type; do echo working on "$line"; some_command "$line"; done

重要的是,不要在
$type
for语句中用双引号括住第一次出现的
$type
,否则您将一次获得所有行

假设
$type
中的行除新行字符外不包含空格,请尝试:

for line in $type; do echo working on "$line"; some_command "$line"; done
#!/bin/sh

init () {
echo "${type}" > stack+.txt

cat > edprint+.txt << EOF
1p
q
EOF

cat > edpop+.txt << EOF
1d
wq
EOF

next
}

end () {
rm -v ./edprint+.txt 
rm -v ./edpop+.txt
exit 0
}

next () {
[[ -s stack+.txt ]] && main
end
}

main () {
line=$(ed -s stack+.txt < edprint+.txt)
echo "${line}" # or whatever other commands you want here
ed -s stack+.txt < edpop+.txt
next
}

init
重要的是,不要在
$type
for语句中用双引号括住第一次出现的
$type
,否则您将一次获得所有行

#/垃圾箱/垃圾箱
#!/bin/sh

init () {
echo "${type}" > stack+.txt

cat > edprint+.txt << EOF
1p
q
EOF

cat > edpop+.txt << EOF
1d
wq
EOF

next
}

end () {
rm -v ./edprint+.txt 
rm -v ./edpop+.txt
exit 0
}

next () {
[[ -s stack+.txt ]] && main
end
}

main () {
line=$(ed -s stack+.txt < edprint+.txt)
echo "${line}" # or whatever other commands you want here
ed -s stack+.txt < edpop+.txt
next
}

init
init(){ echo“${type}”>stack+.txt cat>edprint+.txt edpop+.txt
#!/bin/sh
init(){
echo“${type}”>stack+.txt
cat>edprint+.txt edpop+.txt在我看来,最简单的方法是使用
xargs
和参数
-L
(限制):

xargs
获取每个输入行,并将值作为参数传递给
some_命令

某些_命令
可能也有其他参数。
xargs
在其参数列表的末尾添加输入行并执行它。(但是,可以告诉您,使用
-J
将输入行插入不同的位置)

在我看来,最简单的方法是使用
xargs
和参数
-L
(限额):

xargs
获取每个输入行,并将值作为参数传递给
some_命令


某些_命令
也可能有其他参数。
xargs
将输入行添加到其参数列表的末尾并执行它。(但是,可以告诉它使用
-J
将输入行插入不同的位置)

你尝试了什么?你做了什么研究?确切地说,可能是…@KamilCuk我一直在寻找堆栈溢出和各种循环,但没有结果。你尝试了什么?你做了什么研究?确切地说,可能是…@KamilCuk我一直在寻找堆栈溢出和各种循环我得到了以下输出:
在car上工作
剪切:car:没有这样的文件或目录
在平面上工作
剪切:平面:没有这样的文件或目录
如果我在$type中作为行的
运行,我使用
删除了错误;在“$line”上执行echo操作;some_command;done
即没有
我认为错误来自命令
some_command
,但由于我完全不知道该命令在做什么,我无法告诉您发生了什么。根据我上面看到的诊断,我想
some_command
是一个调用
cut
的bash脚本。请告诉我在
中,某些命令car
确实作为输出提供。如果您不发布
某些命令的代码,至少是其简化版本,将很难理解发生了什么。我得到以下输出:
处理car
剪切:car:没有这样的文件或目录
处理平面
剪切:平面:没有这样的文件或目录
如果我在$type中作为行的
运行,则使用
删除错误;是否在“$line”上执行echo操作;some_command;done
即没有
我认为错误来自命令
some_command
,但由于我完全不知道该命令在做什么,我无法告诉您发生了什么。根据我上面看到的诊断,我想
some_command
是一个调用
cut
的bash脚本。请告诉我在
some_command car
中,某些命令会作为输出提供。如果您不发布
some_command
的代码,至少是它的简化版本,则很难理解发生了什么。