在运行时将用户输入从一个脚本传递到另一个脚本

时间:2019-02-06 17:47:30

标签: shell unix

我有一个要求,其中 ScriptA.sh 具有命令来询问用户的输入并执行一组操作。我想通过创建另一个脚本来使其自动化,该脚本将读取ScriptA.sh输出中提出的问题并在运行时提供必要的值。

ScriptA.sh如下:-

echo "Enter the CR Number"
read varnamecr
echo "CR Number is" $varnamecr
echo "Loading the config set. Choose Option From Below set
1.JAN
2.FEB
3.MAR"
read optionchoosen
echo "Option Choosen is :" $optionchoosen
echo "Will run the script/load configuration is this Ok ?[y/N]"
read userinput
echo "Proceed further, User has pressed ->"$userinput"<--Key"

如何编写第二个脚本来实现此目的。在第二个脚本中尝试了spawn和其他几个命令,但是没有运气。请帮我解决一下这个。

2 个答案:

答案 0 :(得分:0)

输入每次都会保持不变吗?如果是这样,您可以创建此脚本的包装以提供所需的输入。

cat wrapper
./ScriptA.sh <<!
123
2
y
!

答案 1 :(得分:0)

由于您没有在标签中指定任何外壳,因此这是ksh中可能的解决方案,尽管很粗糙。它正在使用该shell的协同处理功能(请确保bash不支持它,尽管请不要在其中引用我)

#!/bin/ksh

./ScriptA.sh |&

while read -p Dummy; do
        print $Dummy
        case $Dummy in
                "Enter the CR Number")print -p "CR123456"
                                        ;;
                "3.MAR")print -p "3"
                                ;;
                "Will run the script"*)print -p "y"
                                ;;
        esac
done

输出结果为:

Enter the CR Number
CR Number is CR123456
Loading the config set. Choose Option From Below set
1.JAN
2.FEB
3.MAR
Option Choosen is : 3
Will run the script/load configuration is this Ok ?[y/N]
Proceed further, User has pressed ->y<--Key