加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 21:14:11 所属栏目:安全 来源:网络整理
导读:我有一个脚本,它接受了几个参数. 现在,我已将脚本修改为除多个文件名以外的操作. 我还希望在通过管道(|)或重定向输入()接收输入时执行此脚本. 但是,当不提供上述三个输入时,我不希望脚本在终端上等待输入,而是显示使用说明. 我使用以下功能: # PIPED CONTEN
我有一个脚本,它接受了几个参数.
现在,我已将脚本修改为除多个文件名以外的操作.
我还希望在通过管道(|)或重定向输入(<)接收输入时执行此脚本.
但是,当不提供上述三个输入时,我不希望脚本在终端上等待输入,而是显示使用说明.

我使用以下功能:

# 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 test将文件描述符作为参数(0是stdin),如果是终端则返回true.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读