如果语句在shell脚本中抛出意外的文件结尾

时间:2012-05-03 12:50:36

标签: linux bash shell

每当我运行此脚本时,find部分都会执行,但if语句会导致此错误:

./list_datasheets.csh: line 13: syntax error: unexpected end of file

这是剧本:

find $1  -type d | while read -r dir
    do
    for f in ${dir}/*
    do
        echo ${f} | tr '[A-Z]' '[a-z]'
    done
done
if ($2 == "both") then 
    echo 'bye'
else
    echo 'hi'
endif

2 个答案:

答案 0 :(得分:11)

尝试将最后一行(endif)替换为fi,这是关闭if语句的正确令牌。

另外,请使用正确的($2 == "both")替换[ $2 == "both" ]

哦,然后,实际上if应写成:

   if [ "$2" == "both" ]; then
      echo 'bye'
   else
      echo 'hi'
   fi

请注意$2周围的引号,[之后和]之前的空格以及;之前的then

答案 1 :(得分:2)

您需要使用if而非fi结束endif阻止。

我猜你对在C和C ++中关闭#endif块的#if方式感到困惑。