如何通过shell脚本输入提示输入

时间:2015-04-01 14:31:06

标签: shell

我有一个shell脚本(main.sh),其中前几行通过用户的输入读取一些数据。

    echo   "Enter the model  !!"
    read model
    echo "Enter the Weight !!"
    read wgt
    echo  "enter the data file  !!"
    read datafile
    echo  "Enter the two column names  !!"
    read coll1 coll2

这些变量$ model,$ wgt,$ datafile,$ coll1,$ coll2正在其余的程序中使用。当我通过./main.sh运行它并分别给出输入MODEL,WGT,DATA,COL1 COL2时,一切运行正常。但我想通过文件提供这些输入。所以我创建了另一个包含

的脚本文件
    echo "COL1 COL2" | echo "DATA" | echo "WGT" | echo "MODEL" | ./main.sh

它只接受第一个输入,即MODEL。有没有办法正确地做到这一点?

3 个答案:

答案 0 :(得分:2)

不要回声回声。 echo没有读取标准输入,所以除了最后一个之外你都会失去一切。此外,如果按照书面形式工作,它可能会倒退。

你想要更像这样的东西:

{
    echo "MODEL"
    echo "WGT"
    echo "DATA"
    echo "COL1 COL2"
} | ./main.sh

当然,这也可能只是:

printf 'MODEL
WGT
DATA
COL1 COL2
' | ./main.sh

答案 1 :(得分:0)

更改你的main.sh以接收这些不同的参数作为参数而不是标准输入,然后像这样调用它

./main.sh $COL1 $COL2 $DATA ....

答案 2 :(得分:0)

你可以这样做:

main脚本中:

coll1=$1
coll2=$2
datafile=$3
wgt=$4
model=$5

然后像这样运行你的主脚本:

./main col1 col2 data wgt model

你必须保持序列......