Bash脚本

Bash脚本,bash,input,arguments,Bash,Input,Arguments,我这里有个小问题 我写了一个剧本,效果很好。但有一个小问题 该脚本接受1或2个参数。第二个参数是一个.txt文件 如果您编写类似于my_script arg1 test.txt的内容,脚本将正常工作。但是当您编写myu脚本arg1

我这里有个小问题

我写了一个剧本,效果很好。但有一个小问题

该脚本接受1或2个参数。第二个参数是一个.txt文件

如果您编写类似于
my_script arg1 test.txt
的内容,脚本将正常工作。但是当您编写
myu脚本arg1
时,它不会

下面是我的代码演示:

#!/bin/bash

if [[ $# = 0 || $# > 2 ]]
then
    exit 1
elif [[ $# = 1 || $# = 2 ]]
then
    #do stuff

    if [ ! -z $2 ]
    then
        IN=$2
    else
        exit 3
    fi
fi

cat $IN

如何使用
myu脚本arg1

如果您只想更改调用
myu脚本的方式,那么只需让
cat
读取
myscript
的标准输入,不给它任何参数:

#!/bin/bash

if [[ $# != 0 ]]
then
    exit 1
fi
cat
如果希望脚本与
myscript arg1
myscript arg1 test.txt
一起工作,只需检查参数的数量并相应地执行操作即可

#!/bin/bash

case $# in
   0) exit 1 ;;
   1) cat ;;
   2) cat $2 ;;
esac

如果你看看你的同事们是如何使用“阅读”来获取管道内容的

做这样的事:

   while read line; do
      echo -n "$line"
   done <"${1}"
读行时
;做
echo-n“$line”

您了解脚本当前是如何工作的吗?解析参数如何,如下所示: