我正在开发一个脚本,它利用getopts输入正则表达式作为选项的第一部分。有问题的选项需要运行指定文件的表达式,并将结果打印到命令行。
我将表达式保存在变量中,但后来我不知道如何从那里正确运行表达式。以下是我的代码的适用部分。
#!/bin/bash
file=""
sreg=""
search=false
while getopts c:s: flag; do
case $flag in
c) #file name
if ! [ -w "$OPTARG" ]
then
echo > "$OPTARG"
fi
file="$OPTARG";
;;
s) #search for contact (use grep)
search=true
sreg="$OPTARG";
;;
?)
exit;
;;
esac
done
shift $(( OPTIND - 1 ));
if $search
then
$sreg $file
fi
exit
答案 0 :(得分:1)
只需使用grep
:
grep -e "$sreg" "$file"
顺便说一下,你不需要在作业中引用变量。
file=$OPTARG # same as file="$OPTARG"