读取文件时嵌套脚本

时间:2019-02-27 19:05:45

标签: bash

我有3个脚本:

foo1.sh-在读取文件的每一行时调用脚本foo2.sh

#!/bin/bash

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
I=1

while read LINE  || [ -n "$LINE" ]; do
    ID=$(printf "%05d\n" $I)
    ((I++))
    IDS=($(awk -F "," '{print $1; print $2}' <<< $LINE))

    $SCRIPT_DIR/foo2.sh $ID ${IDS[0]} ${IDS[1]} '-hello'
done < $SCRIPT_DIR/a.txt

foo2.sh-调用脚本foo3.sh

#!/bin/bash

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

$SCRIPT_DIR/foo3.sh $1 $2 $3 $4

foo3.sh-调用记录日志的函数

#!/bin/bash

info(){
    echo "[INFO][${ARG1}|${ARG2}|${ARG3}] - $1"
}

ARG1=$1
ARG2=$2
ARG3=$3
ARG4=$4

info "START"
info "END"

我有一个包含以下数据的文件a.txt:

foo11,foo12
foo21,foo22

当我运行./foo1.sh时,会发生以下情况:

] - START001|foo11|foo12
] - END00001|foo11|foo12
[INFO][00002|foo21|foo22] - START
[INFO][00002|foo21|foo22] - END

我不明白为什么。如果我回显foo3的每个ARG,它们都是正确的。 如果我在foo2中创建相同的函数,则输出正确。

是因为a.txt第一行中的\ n吗?

0 个答案:

没有答案