我是一个新手,对ubuntu和bash脚本不太熟悉,想知道在使用GETOPTS时为什么会出现错误。
这里是我用来运行它的代码。
sh /home/ubuntu/Desktop/test.sh -f /home/u/Desktop/ -p 'TEST'
我认为我正确地调用了脚本,并且它应该使用grep搜索我输入的术语作为搜索项。但是由于某种原因它没有成功。如果在使用grep时需要一些一般性建议,也请提供,谢谢。
#!/bin/bash
valid=0
file_arg=""
display_help=""
column=""
pattern=""
while getopts f:d:s:m: opt
do
case "$opt" in
d) display_help=$OPTARG
;;
f) file_arg=$OPTARG
;;
c) column=$OPTARG
;;
p) pattern=$OPTARG
;;
*) valid=1
break
;;
esac
done
if [ $valid -eq "0" ]
then
if [ $pattern != "" ]
then
cat $file_arg | grep $pattern
else
cat $file
fi
else
echo -n "Usage: FILE -f <name> | COLUMN -> -c <name> | HELP -> -d | PATTERN -> -p <expression>"
fi
?
没有进行转义,则它可以匹配任何内容,这样就永远无法进入:
的情况,因此缺少参数会被报告为无效选项。 - Mark Booth