Почему я получаю синтаксическую ошибку от | в этом скрипте?

Я получаю сообщение об ошибке из этого скрипта

#!/bin/bash red="\033[31m" green="\033[32m" yellow="\033[33m" blue="\033[34m" pink="\033[35m" cyan="\033[36m" white="\033[37m" echo "" echo -e "${green} _ __ ___ ___ " echo -e "${green} | '_ \/ __/ __|" echo -e "${green} | | | \__ \__ \" echo -e "${green} |_| |_|___/___/" echo -e "${blue} Welcome My first program" echo ""

Ошибка, предоставленная мне системой

./my_first_program.sh: Line 14: unexpected token `| ' Syntax error near ./my_first_program.sh: Line 14: `echo -e "${green} |_| |_|___/___/"'

Как ее исправить?

1
задан 28 August 2017 в 22:54

6 ответов

В строке

echo -e  "${green}      | | | \__ \__ \"

\ перед " удаляет специальный смысл " и делает его нормальным символом, который не заканчивает строку. Поэтому строка продолжается до следующей строки, пока " до ${green} и следующего ${green} |_| |_|___/___/ больше не цитируется, что вызывает ошибку.

Добавьте пробел после \ для предотвращения его выхода из ":

echo -e  "${green}      | | | \__ \__ \ "
9
ответ дан 22 May 2018 в 18:59
  • 1
    +1 ... или вывести обратную косую черту, то есть echo -e "${green} | | | \__ \__ \\" – steeldriver 28 August 2017 в 22:50

В строке

echo -e "${green} | | | \__ \__ \"

\ перед " удаляет специальный смысл " и делает его нормальным символом, который не заканчивает строку. Поэтому строка продолжается до следующей строки, пока " до ${green} и следующего ${green} |_| |_|___/___/ больше не цитируется, что вызывает ошибку.

Добавьте пробел после \ для предотвращения его выхода из ":

echo -e "${green} | | | \__ \__ \ "
9
ответ дан 18 July 2018 в 07:46

В строке

echo -e "${green} | | | \__ \__ \"

\ перед " удаляет специальный смысл " и делает его нормальным символом, который не заканчивает строку. Поэтому строка продолжается до следующей строки, пока " до ${green} и следующего ${green} |_| |_|___/___/ больше не цитируется, что вызывает ошибку.

Добавьте пробел после \ для предотвращения его выхода из ":

echo -e "${green} | | | \__ \__ \ "
9
ответ дан 24 July 2018 в 18:52

Хорошо, я внесла изменения в ваш скрипт, и вот код:

#!/bin/bash

red="\033[31m"
green="\033[32m"
yellow="\033[33m"
blue="\033[34m"
pink="\033[35m"
cyan="\033[36m"
white="\033[37m"

echo ""
echo -e  "${green}       _ __  ___ ___ "
echo -e  "${green}      | '_ \/ __/ __|"
echo -e  "${green}      | | | \__ \__ \\"
echo -e  "${green}      |_| |_|___/___/"
echo -e  "${blue}       Welcome My first program"
echo ""

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

1
ответ дан 22 May 2018 в 18:59

Хорошо, я внесла изменения в ваш скрипт, и вот код:

#!/bin/bash red="\033[31m" green="\033[32m" yellow="\033[33m" blue="\033[34m" pink="\033[35m" cyan="\033[36m" white="\033[37m" echo "" echo -e "${green} _ __ ___ ___ " echo -e "${green} | '_ \/ __/ __|" echo -e "${green} | | | \__ \__ \\" echo -e "${green} |_| |_|___/___/" echo -e "${blue} Welcome My first program" echo ""

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

1
ответ дан 18 July 2018 в 07:46

Хорошо, я внесла изменения в ваш скрипт, и вот код:

#!/bin/bash red="\033[31m" green="\033[32m" yellow="\033[33m" blue="\033[34m" pink="\033[35m" cyan="\033[36m" white="\033[37m" echo "" echo -e "${green} _ __ ___ ___ " echo -e "${green} | '_ \/ __/ __|" echo -e "${green} | | | \__ \__ \\" echo -e "${green} |_| |_|___/___/" echo -e "${blue} Welcome My first program" echo ""

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

1
ответ дан 24 July 2018 в 18:52

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

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