End of file syntax error shell scripting [closed]

#!/bin/bash

source conf.ini

inotifywait -m -e create /$1path |
  while read file; do

if ($(echo $word | head -c 1)"=$1 then
    echo $file
cd $1inputpath
ls -l |grep $file*
zcat $file* > /tmp/$file
sort /tmp/$file > /tmp/$file.sorted
cd $1outputpath
 ls -l |grep $file
sort  $file > /tmp/$file.origsorted
diff /tmp/$file.origsorted  /tmp/$file.sorted
 if [ $? -eq 0 ];
 then
   echo OK
else
echo FAIL
echo $file
fi

fi
      done

Я получаю следующую ошибку:en do fthe file:

./FoldersegCompare: line 8: unexpected EOF while looking for matching `"'
./FoldersegCompare: line 32: syntax error: unexpected end of file
0
задан 31 July 2015 в 23:32

2 ответа

В не знают то, что Вы пытаетесь сделать с этим сценарием, но смотрите на него сначала время, я вижу, что ошибки из-за этой строки:

if ($(echo $word | head -c 1)"=$1 then

Делают его как:

if [ "$(echo $word | head -c 1)" = "$1" ]; then

при выполнении проверки с if-then условное выражение создают использование test ([) или [[ (bash - изм). Проверьте help test на большее количество информации

, Когда Вы сделаете if ($(echo $word | head -c 1)"=$1 then:

  • существуют синтаксические ошибки, ( после if и " прежде =, возможно, Вы имели в виду "$(echo $word | head -c 1)"

  • Также, поскольку Вы не используете никакой test (или [[), = просто предполагает, что Вы делаете уроки. Таким образом, Вам нужно [ (test) или [[, чтобы удостовериться, что Вы сравниваете вещи

  • , Также Вы отсутствовали ; прежде then, который является сокращением от новой строки (или можно поместить then в следующую строку)

, Также сценарий кажется неэффективным (чтобы быть честным) мне путем рассмотрения команд, Вы раньше получали задание (я не знаю что), сделанный. Возможно, необходимо пройти ответы сценариев, отправленные здесь и другие сайты для получения некоторое представление, о котором инструменте использовать, в какой ситуация, задают новый вопрос для наблюдения, какие другие предлагают решить проблему и конечно использовать добавление отступа.

2
ответ дан 1 October 2019 в 05:47

Исправьте следующие проблемы и проверьте Ваш сценарий снова здесь или посмотрите мои исправления ниже

   1  #!/bin/bash
   2  
   3  source conf.ini
   4  
   5  inotifywait -m -e create /$1path |
   6    while read file; do
   7  
   8  if ($(echo $word | head -c 1)"=$1 then
          ^––SC1009 The mentioned parser error was in this simple command.
                                   ^––SC1073 Couldn't parse this double quoted string.
   9      echo $file
  10  cd $1inputpath
  11  ls -l |grep $file*
  12  zcat $file* > /tmp/$file
  13  sort /tmp/$file > /tmp/$file.sorted
  14  cd $1outputpath
  15   ls -l |grep $file
  16  sort  $file > /tmp/$file.origsorted
  17  diff /tmp/$file.origsorted  /tmp/$file.sorted
  18   if [ $? -eq 0 ];
  19   then
  20     echo OK
  21  else
  22  echo FAIL
  23  echo $file
  24  fi
  25  
  26  fi
  27        done
      ^––SC1072 Expected end of double quoted string. Fix any mentioned problems and try again.

, НАПРИМЕР,

#!/bin/bash

source conf.ini

inotifywait -m -e create /"$1path" |
while read -r file; do
  if ("$(echo "$word" | head -c 1)"="$1"); then
    echo "$file"
    cd "$1inputpath" || exit
    find . -maxdepth 1 -type f -name "$file"
    zcat "$file"* > /tmp/"$file"
    sort /tmp/"$file" > /tmp/"$file".sorted
    cd "$1outputpath" || exit
    find . -maxdepth 1 -type f -name "$file"
    sort  "$file" > /tmp/"$file".origsorted
    diff /tmp/"$file".origsorted  /tmp/"$file".sorted
    if [ $? -eq 0 ];
    then
      echo OK
    else
      echo FAIL
      echo "$file"
    fi
  fi
done
<час>

И если Вы получаете что-то вроде этого

./FoldersegCompare: line 5: inotifywait: command not found

просто установка с

sudo apt-get install inotify-tools
1
ответ дан 1 October 2019 в 05:47

Другие вопросы по тегам:

Похожие вопросы: