Bash:只允许Pipe(|)或Redirect(<)传递数据,否则显示用法

Sto*_*oic 4 bash

我有一个脚本,它接受了几个参数.
现在,我已将脚本修改为除多个文件名以外的操作.
我还希望在通过管道(|)或重定向输入(<)接收输入时执行此脚本.但是,当不提供上述三个输入时,我不希望脚本在终端上等待输入,而是显示使用说明.

我使用以下功能:

# 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
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

关于
Nikhil Gupta

gee*_*aur 6

if test -t 0; then
    echo Ignoring terminal input.
else
    process -
fi
Run Code Online (Sandbox Code Playgroud)

-t测试需要一个文件描述符作为参数(0标准输入),并且如果它是一个终端返回true.