我有一个文件text.txt
,其中包含两行。
first line
second line
我试图使用以下循环在bash中循环:
while read -r LINE || [[ -n "$LINE" ]]; do
# sed -i 'some command' somefile
echo "echo something"
echo "$LINE"
sh call_other_script.sh
if ! sh some_complex_script.sh ; then
echo "operation failed"
fi
done <file.txt
致电some_complex_script.sh
时,仅处理第一行,但在评论时,会处理所有两行。
some_complex_script.sh
执行所有类型的操作,例如启动进程,sqlplus,启动WildFly等。
./bin/call_some_script.sh | tee $SOME_LOGFILE &
wait
...
sqlplus $ORACLE_USER/$ORACLE_PWD@$DB<<EOF
whenever sqlerror exit 1;
whenever oserror exit 2;
INSERT INTO TABLE ....
COMMIT;
quit;
EOF
...
nohup $SERVER_DIR/bin/standalone.sh -c $WILDFLY_PROFILE -u 230.0.0.4 >/dev/null 2>&1 &
我的问题是如果在some_complex_script.sh
和循环中有一些不应被称为的操作(可能需要10分钟)完成,这是一个好主意吗?)可能打破这个循环。
使用Jenkins和Publish over SSH Plugin调用该脚本。当some_complex_script.sh
被单独调用时,没有问题。
答案 0 :(得分:8)
您应该关闭或重定向运行的其他命令的stdin,以阻止它们从文件中读取。例如:
sh call_other_script.sh </dev/null