我写了一个bash脚本,首先对文本文件进行操作,然后从内部执行另一个脚本,在while循环中重复此操作。在特定时间从内部执行的脚本询问用户
'按停止'
并等待5秒,如果用户没有按回车则更进一步。如果我单独执行这个脚本,它可以正常工作,但如果我从另一个脚本中执行它,似乎自动按下返回键并停止执行。
我该如何避免呢?
以下是该脚本的示例:
#!/bin/bash
pMatrixFile='file.csv'
templateFile='out.txt'
nSim=0
while read line
do
((nSim++))
# ***************Read the input file*****************************************
scale1=$(echo $line | cut -f1 -d\;)
scale2=$(echo $line | cut -f2 -d\;)
# ***************Write the file to be runned*********************************
sed -e "/double Scale_EX2 = / s|scale_DOE|$scale1|g" \
-e "/double Scale_EX6 = / s|scale_DOE|$scale2|g" \
-e "/double Scale_EX7 = / s|scale_DOE|$scale8|g" <$templateFile >$fileName
# ***************Launch the simulation on server*****************************
sed -e "s|simFile|$simFile|g" <$submitTemplateFile >$submitFile
sed -i "s|simVisName|$simVisName|g" $submitFile
# *************At this line we have the issue!***********
chmod a+x $submitFile
. ./$submitFile |tee log
# *******************************************************
# ***************Clean up the temporary files********************************
rm $simFile $fileName $submitFile
done<$pMatrixFile
$ submitFile是我的外部脚本。
感谢您的帮助!
答案 0 :(得分:2)
使用与stdin(0)不同的文件描述符。例如:
while read -u 4 line; do
...
done 4< your_file.txt
这有助于防止您block
的某些部分在每次要求时都使用来自your_file.txt
的输入。