【问题标题】:how to give input to secondary prompt which comes after running a script如何在运行脚本后向辅助提示提供输入
【发布时间】:2015-05-23 13:56:14
【问题描述】:
$ cat messing_script.sh
#!/bin/sh
ext=`date '+%m%d%H%M'`
host=`hostname`
datalog=/export/admin/imsimta
dire=`date '+%m%d'`
datadir=$datalog/$host/$dire
if [ ! -d $datadir ]
then
        mkdir -p $datadir  2> /dev/null
fi
dir1=/opt/sun/comms/messaging64/sbin/
cd     $dir1
sleep     5
./imsimta qm
sleep 2
top > $datadir/$ext 2> /dev/null
exit

【问题讨论】:

  • 当我运行这个脚本时,./imsimta qm 将创建另一个提示,即。 qm.maint> 并且在这个提示下我需要运行 top > $datadir/$ext 2> /dev/null cmd。但是在 qm.maint> 提示符后脚本不起作用。
  • # cat messing_script.sh #!/bin/sh ext=date '+%m%d%H%M' host=hostname datalog=/export/admin/imsimta dire=date '+%m%d' datadir=$datalog/$host/如果 [ ! -d $datadir ] 然后 mkdir -p $datadir 2> /dev/null fi dir1=/opt/sun/comms/messaging64/sbin/ cd $dir1 sleep 5 ./imsimta qm sleep 2 top > $datadir/$ext 2 > /dev/null 退出
  • 试试echo "Second answer" | ./imsimta qm
  • top 重定向到文件几乎肯定是错误的做法。

标签: linux shell scripting solaris


【解决方案1】:

imsimta,如果它生成一个 shell,可能支持运行字符串的选项。尝试以下之一:

./imsimta qm -c "top > $datadir/$ext"

./imsimta qm << EOF > $datadir/$ext
top 
EOF

第二种情况可能像echo top | ./imsimta qm 那样更容易,但是heredoc 可以更容易地根据需要进行扩展。这些都不能保证有效,它们取决于imsimta 的实现方式。我强烈建议在你有一个工作脚本之前不要丢弃 stderr。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多