我有一个接受多个参数的脚本。
现在,我修改了脚本以排除多个文件名并对其进行操作。
我还希望在通过管道 (|) 或重定向输入 (<) 接收输入时执行此脚本。
但是,我不希望脚本在没有提供上述三个输入时等待终端输入,而是显示使用说明。
我正在使用以下功能:
# 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
感谢任何帮助。
问候
尼克尔·古普塔
最佳答案
if test -t 0; then
echo Ignoring terminal input.
else
process -
fi
-t
测试将文件描述符作为参数(0 是标准输入),如果它是终端则返回 true。
关于Bash:只允许管道(|)或重定向(<)传递数据,否则显示用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5482062/