Как решить ‘Синтаксическая ошибка в строке 131: `’ не соответствует.’ ошибка

#shell #ksh

#оболочка #ksh

Вопрос:

Я новичок в написании скриптов. Я столкнулся с упомянутой в названии, т. е. ‘Синтаксическая ошибка в строке 131: `’ не соответствует.’ . Код в строке 131 закомментирован. Я думаю, что проблема может быть в строке ниже. Кто-нибудь может подсказать мне, как следует писать приведенный ниже код? Мне нужно вывести значение scp и команды ssh, чтобы определить, был ли код успешно выполнен.

 scpstat=`echo scp $INPUTDIR/work_dir/$f $EUSER@$ESCSYS:$EDIR/build/. |
ssh $EUSER@$ECSYS "chmod 660 $EDIR/build/$f;chgrp 107 $EDIR/build/$f;chown 103 $ESCDIR/build/$f;rename $ESCDIR/build/$f $ESCDIR/work/$f"'
  status=$?
  

Ответ №1:

Мне кажется, что ` (backtick) before echo не соответствует, как следует из ошибки. Похоже, что ‘ (апостроф) в конце второй строки должен быть обратным знаком вместо этого.

Некоторые люди думают, что лучше использовать этот стиль $(...) , а не `…`, и это, безусловно, хороший пример того, почему.

Комментарии:

1. Да, я один из тех людей, так что 1. Также это намного проще вложить $() , чем обратные ссылки.

Ответ №2:

Ну, начнем с того, что у вас есть открывающий `, и у вас нет закрывающего. 🙂

Ответ №3:

Часто бывает трудно добраться до номеров строк, указанных в ошибках скрипта. Это потому, что если вы включите другой скрипт в свой скрипт (делается путем указания . scriptname в ksh) тогда фактическая длина исходного скрипта изменяется во время выполнения. Если во включенном скрипте есть ошибки, то номера строк могут вводить в заблуждение, потому что вы не можете добраться до этих строк. Я чувствую, что ошибка в вашем случае в вызванном скрипте, а не в том, который вы просматриваете. Проверьте, вызываете ли вы / включаете ли какой-либо другой скрипт и попробуйте запустить его отдельно. Таким образом, вы, вероятно, сможете изолировать проблему.