Shell(bash)脚本,用于通过从文件中的每一行获取两个参数来进行循环

时间:2017-04-21 13:34:02

标签: linux bash shell loops

我想写一个脚本来启动一些守护进程 我保留了一些没有usernamepath s的相同内容的脚本 但是,为了使脚本更普遍,我试图使它更通用,并通过循环进行。

这些是我想要运行的通用输入和脚本。

输入文件:input.txt

pathA userA
pathB userB
...
pathZ userZ

工作脚本:echos.sh

echo "1: $1"
echo "2: $2"

并且,预期结果是:

1: pathA
2: userA
1: pathB
2: userB
....
1: pathZ
2: userZ

但是,我无法编写能够提供预期结果的正确脚本。

这是我写的脚本。 (我知道这肯定会失败......):loop.sh(我像$ loop.sh input.txt一样运行)

#listfile=$1
listlines=`cat $1`
for args in $listlines
do
    bash echos.sh $args
done

我怎样才能获得/修复它?

被修改

对不起,我忘了从echo $args ...

中删除loop.sh

2 个答案:

答案 0 :(得分:1)

问题尚不清楚,但我你正在寻找:

while read path user; do 
    bash echos.sh $path $user
done < input.txt

答案 1 :(得分:0)

认为这回答了你的问题,但我不确定。我有点不清楚。

#!/bin/sh

if [ -z "$1" ] ; then
  >&2 echo "Missing input file argument; exiting."
  exit 1
fi

while read -r path user ; do
  echo "1: $path"
  echo "2: $user"
done < "$1"

input.txt文件包含:

pathA userA
pathB userB
pathZ userZ

示例输出:

neech@nicolaw.uk:~ $ ./loop.sh
Missing intput file argument; exiting.
neech@nicolaw.uk:~ $ ./loop.sh input.txt
1: pathA
2: userA
1: pathB
2: userB
1: pathZ
2: userZ