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

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

#!/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

2 ответа

В строке

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

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

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

echo -e  "${green}      | | | \__ \__ \ "
0
ответ дан 28 August 2017 в 22:54

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

#!/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 ""

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

0
ответ дан 28 August 2017 в 22:54

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

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