我有一个脚本,其中包含几个参数 现在,我已将脚本修改为除多个文件名以外的操作 我还希望在通过管道(|)或重定向输入(<)接收输入时执行此脚本。 但是,如果没有提供上述三个输入,我不希望脚本在终端上等待输入,而是显示使用说明。
我正在使用以下功能:
# PIPED CONTENT
if [ "$#" == "0" ]; then
READINPUT="1"
if [ "x$TEXTINPUT" == x"" ]; then
READINPUT=1
TMPFL=`tempfile -m 777`
while read data; do
echo "${data}" >> $TMPFL
done
TEXTINPUT="`cat $TMPFL`"
rm $TMPFL
fi
# if [ "x$TEXTINPUT" == x"" ]; then
# if [ "$#" == "0" ]; then usage; fi
# fi
fi
感谢任何帮助。
问候
尼基尔古普塔
答案 0 :(得分:6)
if test -t 0; then
echo Ignoring terminal input.
else
process -
fi
-t
测试将文件描述符作为参数(0是stdin),如果是终端则返回true。
答案 1 :(得分:1)
请注意,有两个不同的“测试”命令:内置bash命令和“test”程序,它通常作为/ usr / bin / test安装,是coreutils包的一部分。两者提供相同的功能。
[[ -t 0 ]]
相当于
/usr/bin/test -t 0
您可以在“bash”命令行上运行上述任一操作,但结果相同。