2014-07-11 2 views
2

Я написал сценарий bash, который сначала выполняет операции над текстовыми файлами, а затем выполняет другой скрипт изнутри, повторяя эту операцию в цикле while. Сценарий, который выполняется внутри в определенное время спросить у пользователяСценарий Bash, который, кажется, нажимает кнопку нежелательного возврата

«нажмите, чтобы остановить»

и подождать 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

Вы пишете внутри '$ submitFile' в качестве первой строки' #!/Bin/bash'? Если есть '#!/Bin/sh', команда' 'read' должна работать по-другому ...] (http://stackoverflow.com/a/2612297/3569208) – Hastur

ответ

2

Используйте дескриптор файла, отличный от stdin (0). Пример:

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

Это поможет предотвратить некоторые части в то время как block есть вход от your_file.txt каждый раз они просят за одного.

+1

Кажется, что это работает! Теперь я сделаю больше тестов. Благодаря! – user3828750

Смежные вопросы