Bash脚本似乎按不需要的返回键

时间:2014-07-11 09:30:52

标签: bash shell key interaction

我写了一个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是我的外部脚本。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

使用与stdin(0)不同的文件描述符。例如:

while read -u 4 line; do
    ...
done 4< your_file.txt

这有助于防止您block的某些部分在每次要求时都使用来自your_file.txt的输入。