我这里有一个小问题。
我写了一个脚本,工作正常。但是有一个小问题。
该脚本需要1或2个参数。第二个参数是.txt文件。
如果你写的是my_script arg1 test.txt
之类的东西,脚本就可以了。但是当你写my_script arg1 < test.txt
时却没有。
以下是我的代码演示:
#!/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
如何使其与my_script arg1 < test.txt
一起使用?
答案 0 :(得分:2)
如果您只想更改my_script
的调用方式,请让cat
从myscript
的标准输入读取,不要给它任何参数:
#!/bin/bash
if [[ $# != 0 ]]
then
exit 1
fi
cat
如果您希望脚本与 myscript arg1 < test.txt
或 myscript arg1 test.txt
配合使用,只需检查参数数量并采取相应措施。
#!/bin/bash
case $# in
0) exit 1 ;;
1) cat ;;
2) cat $2 ;;
esac
答案 1 :(得分:0)
如果你看看bashnative implemented their cat的那些人你应该如何使用&#39;阅读&#39;获取管道内容..
例如。做这样的事情:
while read line; do
echo -n "$line"
done <"${1}"
HTH,
bovako