#!/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
В не знают то, что Вы пытаетесь сделать с этим сценарием, но смотрите на него сначала время, я вижу, что ошибки из-за этой строки:
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
в следующую строку)
, Также сценарий кажется неэффективным (чтобы быть честным) мне путем рассмотрения команд, Вы раньше получали задание (я не знаю что), сделанный. Возможно, необходимо пройти ответы сценариев, отправленные здесь и другие сайты для получения некоторое представление, о котором инструменте использовать, в какой ситуация, задают новый вопрос для наблюдения, какие другие предлагают решить проблему и конечно использовать добавление отступа.
Исправьте следующие проблемы и проверьте Ваш сценарий снова здесь или посмотрите мои исправления ниже
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