交互式shell会通过tty从tty上读取数据,一般脚本为非交互式(不需要从tty读取数据)。
非交互式的shell仍然可以访问它的tty.如下所示:
#将读取到的内容输出
#!/bin/bash
PROMPT='$ '
while :
do
echo -n "$PROMPT"
read line
echo "$line"
done
测试一个脚本是否运行在交互式shell的方法如下:
#!/bin/bash
if [ -z $PS1 ]
then
echo "运行在交互式shell"
else
echo "运行在非交互式shell"
fi
使用#!/bin/bash -i
可以强制脚本运行在交互模式下。慎用,可能会产生各种古怪行为。
网友评论