Bash 将while循环中的变量追加到命令行选项中
我有一个while循环,其中a=1~3Bash 将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您可能想要这样的东西:
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。这是一个简化的案例。