如果:表达式语法。然后:找不到命令

时间:2018-09-20 17:17:03

标签: shell unix if-statement

我正在尝试创建一个简单的if语句,该语句将第一组输入作为参数,然后将第二组输入作为文件名,然后针对egrep语句运行它们。我不断收到错误消息:

  

if:表达语法。然后:找不到命令。

这是我到目前为止所拥有的...

#!/bin/csh

if [ "$#" -ne 2 ]; then
        echo "usage ./Reagan_lab3.sh (-e|-p) input file"
exit 1

fi

if [ $1 == "--e" ]; then
egrep -o "(([0-9]{3})|[0-9]{3})[ -][0-9]{3}[ -][0-9]{4}" $2

elif [ $1 == "--p" ]; then
egrep -o "\b[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+\b" $2

else;
echo "please make a selection, -e for email or -p for phone number."

exit 2

fi

我一直无法找到想要的东西。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:3)

您的解释器行(第一行)的名称为csh,但是您的脚本语法看起来像是Bourne Shell样式(bashksh等)。

将第一行更改为#!/bin/sh(或类似名称),然后通过ShellCheck运行脚本以查找其他语法和用法问题。