我对 ubuntu 和 bash 脚本编写还很陌生,想知道为什么我在使用 GETOPTS 时可能会遇到此错误。
这是我用来运行它的代码。
sh /home/ubuntu/Desktop/test.sh -f /home/u/Desktop/ -p 'TEST'
我认为我正确地调用了脚本,它应该使用 grap 搜索我作为搜索词输入的词。但由于某种原因它没有。任何有关我在使用 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
最佳答案
在 getopts
中,您没有指定 p
选项,您只有 f:d:s:m:
选项。
我想你的意思是p
而不是m
,反之亦然。
它应该是 f:d:s:m:p:
或 f:d:s:p:
关于bash - Bash 的新手 - 不断收到非法选项错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22909253/