如何在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
的代码,至少是它的简化版本,则很难理解发生了什么。