我想在一个脚本中组合两个for循环脚本。每个脚本都与另一个脚本无关。 假设有两个文件。
我想写一个像
这样的脚本#!/bin/bash
for i in `cat file1` ; do
command 1
command 2
done
for j in `cat file2` ; do
command 1
command 2
done
答案 0 :(得分:0)
在我的回答中,我将使用符号$(cat file1)
,这是一个很好的方式调用子进程(backtics变得混乱)。
如果要为i的每个值循环j,请将循环与
#!/bin/bash
for i in $(cat file1); do
for j in $(cat file2); do
command_1
command_2
done
done
我认为你想要以不同方式组合循环:为两个文件中的所有内容调用相同的命令。这可以通过
完成#!/bin/bash
for i in $(cat file1) $(cat file2); do
command_1
command_2
done
在这种情况下,可以组合两个cat
命令:
#!/bin/bash
for i in $(cat file1 file2); do
command_1
command_2
done
上面的脚本对i
的值做的很少。为文件file1和file2中的每个单词调用您的命令。我想你想为这些文件中的每一行调用命令,这可以用不同的方式完成:
#!/bin/bash
cat file1 file2 | while read -r line; do
command_1 "${line}"
command_2 "${line}"
done
当你在其他情况下使用它时,请记住你也可以read
分隔单词中的每一行,当你只有一个输入文件时,你可以不用cat
:
#!/bin/bash
cat file1 file2 > file3
while read -r var1 var2 othervars; do
command_1 "${var1}"
command_2 "${var2}"
echo "The remaining words ${othervars} are not used in this loop."
done < file3