exec program
将 program 程序替代当前程序进程.
这就意味着 exec 后面再跟任何命令都是没有意义的, 因为他们永远得不到执行
===================================
可以用 exec 命令来关闭标准输入, 然后再以任何从中读取的文件重新打开
要把标准输入改变到文件, 用以下的格式的exec命令 exec < file
以后任何从标准输入读数据的命令都会从file中读取
==============================================
重定向标准输出的方法相似, 命令
exec > report
将此后所有写向标准输出的文件写入report文件.
注: 这里的 exec 不是像前面介绍的那样用来启动运行新程序的, 而是用来重新分配标准输入
和标准输出的.
如果用 exec 重新分配了标准输入, 后来又想重新分配到别处, 只需要再执行一次 exec.
如果要把标准输入重新改回终端, 可以写
exec < /dev/tty
使用的方法示例:
#!/bin/bash
if (( $# != 4 )); then
echo "usage: $0 host port user passwd"
exit 1
fi
host=$1
port=$2
user=$3
passwd=$4
inputfile=.ips.in
outputfile=.ips.out
rm -rf $inputfile
rm -rf $outputfile
mknod $inputfile p
touch $outputfile
exec 7<> $outputfile
exec 8<> $inputfile
telnet $host $port<&8 >&7 &
telnet_pid=$!
sleep 1
echo -ne $user'/n''/r' >> $inputfile
sleep 1
echo -ne $passwd'/n''/r'>> $inputfile
sleep 1
#tail -f $outputfile &
echo -ne "/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne ":display-ss7roam-status;/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne ":display-mtp-linkloading;/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne ":display-mtp-network:netid=all;/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne ":display-mtp-dsp:netid=all;/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne ":display-mtp-link:slg=all;/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne ":watch-memoryusage;/n/r" >>$inputfile
sleep 1
echo -ne "/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne ":watch-cpuusage:mode=1;/n/r" >>$inputfile
sleep 1
echo -ne "/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne "/n/r" >>$inputfile
echo -ne "exit/n/r" >>$inputfile
#1.get command and result
#2.remove line start with /r or Press...
#3.remove timestamp;
#4.replace xxxx> by :END
#5.replace xxxx>: by BEGIN:
#6.line contains = or ,remove spaces.
#7.replace '- ' by '-';
cat $outputfile |sed -n '/>:/,/>/r/p'|sed '/^[/r|Press]/d'|sed '/>:/{n;d}'|sed '/>/r$/c/:END' |sed -e 's/^.*>:/BEGIN:/g' |sed '/[=|,]/s/[ |/t]//g'
#kill -9 $telnet_pid
#echo -ne ":display-parameter;/n/r" >>$inputfile
exit 0;