"STR: Команда не знайдена", призначаючи значення змінної


9

Я вписав наступні рядки в сценарій оболонки під назвою "test.sh":

#!/bin/bash
echo Hello World
STR=”Hello Again
echo $STR

Після chmod до виконуваного файлу я запустив сценарій ./test.sh. Однак я отримую повідомлення

./test.sh: line 3  STR: Command not found

Що я роблю неправильно?


1
Чи відповів тердон на ваше запитання? Якщо ні, то, можливо, у вас випадково є пробіли навколо змінної призначення.
Арронічний

@Voker - лише стилістичний коментар, заснований на моїй пропозиції : я думаю, що найкраще використовувати Blockquote для повідомлень про помилки замість блоку Code; врешті-решт, це не код, а якийсь текст, який повертає перекладач Баша.
fedorqui

@fedorqui чому? Quote блоки незберігають форматування, вони інтерпретують спеціальні символи (наприклад *, _, #), а уцінки і надаються по- різному програмне забезпечення для читання з екрану. Я думаю, що все, що надається або отримується комп’ютером, повинно бути в кодових блоках. Ніколи не знаєш, коли точний формат може бути актуальним. Особливо при роботі з такими речами, коли unicode вступає в гру.
тердон

@terdon це дійсно залежить від випадків, і навіть є запит на додавання формату для журналів / попереджень / повідомлень про помилки, що дозволяє обгортати слова та зберігати нові рядки . Для мене, якщо це просто такий рядок, як цей випадок, я віддаю перевагу блокам цитат, оскільки це полегшує розуміння, що таке код, а що - помилки.
fedorqui

@fedorqui Я думаю, що ми повинні прийняти це до мета, але я завжди віддаю перевагу шрифту фіксованої ширини та точного відтворення формату, коли публікуємо повідомлення, яке читається чи створюється комп'ютером.
тердон

Відповіді:


20

Що ви використовуєте для створення цього сценарію? Символи цитати, які ви маєте у своєму запитанні, помиляються. Вони не звичайні подвійні лапки ( "), але . Звичайні котирування:

$ uniprops '"' | head -1
U+0022 "› \N{QUOTATION MARK}

Поки ваші:

$ uniprops '”' | head -1
U+201D ‹”› \N{RIGHT DOUBLE QUOTATION MARK}

Отже, просто використовуйте звичайні цитати, і вам буде добре:

#!/bin/bash
echo Hello World
STR="Hello Again"
echo "$STR" ## Get into the habit of ALWAYS quoting your variables as well

Дякую за відповідь Тердон. Подвійні лапки у файлі правильні, Допис був з електронного листа.
Джей Сілвер

1
unipropsвиглядає круто. Я знайшов сторінку (це наш власний тхріст?). Чи потрібно завантажити його з джерела, чи він десь доступний у менеджері пакунків? E: Unable to locate package uniprops
TRiG

1
Я мало використовую Perl (ледве зовсім). Я просто хочу знати більше, ніж мінімум про Unicode.
TRiG

1
@TRiG добре, в Ubuntu це так просто, sudo apt-get install cpanminus; sudo cpanm Unicode::Tussleі тоді у вас є unipropsкоманда. Звичайно, tchrist написав прокляте, щоб ви могли також запитати його в чаті :)
terdon

1
Я з жалем весь час натрапляю на таку дурницю. Певна система wiki у мого роботодавця, здається, має -жахливу звичку перекладати дефіс-мінус U + 002D в дефіс U + 2010 ( або подібне ). Тоді такі речі, як uname ‐aперестати працювати: - /. Клієнти електронної пошти часто мають подібні шкідливі звички - особливо при використанні форматування HTML - ще одна вагома причина віддати перевагу текстовим електронним повідомленням.
Digital Trauma
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.