2013-12-15 7 views
0

У меня есть сценарий #!/Bin/sh, который задает вопросы пользователя, например, введите свой возраст. Мне нужен еще один скрипт #!/Bin/sh, который запускает первый скрипт и отправляет на него статические ответы. Как я могу отправлять ответы от одного сценария к другому сценарию и отвечать на него.Сценарий, запускающий другой скрипт

Спасибо.

+0

Вызов sh scipt в другом - это как вызов сценария из подсказки ... возможно, я что-то упустил или вам нужно улучшить свой вопрос/потребности ... – user2196728

+0

вам нужно ожидать, он будет подпитываться вашему сценарию в зависимости от ввода от него. – michael501

ответ

0

Если скрипт, который вы хотите протестировать, читает стандартный ввод, а затем используйте его.

for input in 1 2 17 42 63 -1 0 1234568890; do 
    echo "$input" | ./otherscript 
done 

Или, если ваш otherscript уже запускает цикл ввода (скажем, с пустым входом как условие выхода), кормить его здесь документ:

./otherscript <<HERE 
1 
2 
17 
42 
63 
-1 
0 
1234567890 

HERE 

Если вам нужно несколько значений входных для каждый прогон, вы можете объединить два;

while read age name color; do 
    (echo "$age"; echo "$name"; echo "$color") | ./otherscript 
done <<HERE 
1 Baby white 
2 Sister yellow 
17 Teen black 
42 Dad mauve 
63 Grandpa chartreuse 
0 Piglet pink 
-1 Prince purple 
1234567890 Ghod rainbowey 
HERE 

Инструменты Unix регулярно предназначены для считывания параметров из командной строки. Это одна из многих причин, которые являются лучшим дизайном.

0

Давайте назовем скрипт, который запрашивает для входов, userage.sh и caller.sh вызывающего скрипта

Если вы хотите userage.sh принимать ввод без пользовательских подсказок, переделывать, так что, если нет аргументов, принимать пользовательские входы и, если есть аргументы, принимать эти аргументы в качестве входных данных.

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