我有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吗?