Bash 将while循环中的变量追加到命令行选项中

Bash 将while循环中的变量追加到命令行选项中,bash,append,Bash,Append,我有一个while循环,其中a=1~3 mysql -e "select A from xxx;" while read A; do whatever done mySQL命令将只返回数字,每行中的每个数字。这里的while循环将有A=1,A=2,A=3 我想将循环中的整数(这里是A=1~3)附加到命令行中,以便在while循环之外运行。有什么好办法吗 parallel--joblog test.log--jobs 2-k sh::1.sh 2.sh 3.sh您可能想要这样的东西:

我有一个while循环,其中a=1~3

mysql -e "select A from xxx;" while read A; 

do 

whatever

done
mySQL命令将只返回数字,每行中的每个数字。这里的while循环将有A=1,A=2,A=3

我想将循环中的整数(这里是A=1~3)附加到命令行中,以便在while循环之外运行。有什么好办法吗


parallel--joblog test.log--jobs 2-k sh::1.sh 2.sh 3.sh

您可能想要这样的东西:

mysql -e "select A from xxx;" | while read A; do 
    whatever > standard_out 2>standard_error
    echo "$A.sh"
done | xargs parallel --joblog test.log --jobs 2 -k sh ::: 

你可能想要这样的东西:

mysql -e "select A from xxx;" | while read A; do 
    whatever > standard_out 2>standard_error
    echo "$A.sh"
done | xargs parallel --joblog test.log --jobs 2 -k sh ::: 

谢谢你启发我。xargs在这里工作得非常好:

假设我们有一个.csv(模仿mysql命令)

我们可以简单地做到:

cat A.csv | while read A; do

echo "echo $A" > $A.sh

echo "$A.sh"

done | xargs -I {} parallel --joblog test.log --jobs 2 -k sh ::: {}
以上内容将按预期打印以下输出

1
2
3
4
这里-I{}&{}是参数列表标记:


谢谢你的启发。xargs在这里工作得非常好:

假设我们有一个.csv(模仿mysql命令)

我们可以简单地做到:

cat A.csv | while read A; do

echo "echo $A" > $A.sh

echo "$A.sh"

done | xargs -I {} parallel --joblog test.log --jobs 2 -k sh ::: {}
以上内容将按预期打印以下输出

1
2
3
4
这里-I{}&{}是参数列表标记:


您能否澄清mysql命令的输出(总是数字吗?每个数字都在单独的一行上,还是用空格和/或逗号或其他东西分隔?)。而且,它看起来像是要在每个文件后面附加“.sh”;是吗?是的,每个数字都在MySQL命令的单独一行上。此外,在每个选项后面的.sh上都是。我还编辑了这个问题!谢谢@Gordon Davidson您可以澄清mysql命令的输出(它总是仅仅是数字吗?每个数字都在单独的一行上,还是由空格和/或逗号或其他东西分隔?)。而且,它看起来像是要在每个文件后面附加“.sh”;是吗?是的,每个数字都在MySQL命令的单独一行上。此外,在每个选项后面的.sh上都是。我还编辑了这个问题!谢谢@Gordon Davidson您可以通过将
while
循环替换为
sed的/$/.sh/'
来简化这个过程。我只是简单地说了一个echo而不是“whatever”,假设还可以执行其他一些命令。如果情况并非如此,sed确实是一条出路。(在循环中添加了任何内容)你能详细介绍一下你的解决方案吗,@GordonDavisson?谢谢。@Chubaka如果循环唯一要做的事情就是在每行后面加上“.sh”,那么我给出的
sed
命令也会做同样的事情。如果它做的不止这些(例如写入文件),那么它就不能替代循环。@GordonDavisson啊,我明白了。是的,while循环不仅仅是追加.sh。这是一个简化的情况。您可以将
while
循环替换为
sed的/$/.sh/'
。我只是说了一个echo而不是“whatever”,假设还可以执行其他一些命令。如果情况并非如此,sed确实是一条出路。(在循环中添加了任何内容)你能详细介绍一下你的解决方案吗,@GordonDavisson?谢谢。@Chubaka如果循环唯一要做的事情就是在每行后面加上“.sh”,那么我给出的
sed
命令也会做同样的事情。如果它做的不止这些(例如写入文件),那么它就不能替代循环。@GordonDavisson啊,我明白了。是的,while循环不仅仅是追加.sh。这是一个简化的案例。