Рейтинг:-1

выражение: синтаксическая ошибка: неожиданный аргумент «Рабочий стол»

флаг it

Вот мой скрипт bash для преобразования входной температуры из градусов Цельсия в градусы Фаренгейта.

#!/бин/баш
echo "Введите температуру в градусах Цельсия: "
читать по Цельсию
temp=$(выражение $цельсия * 9/5 + 32 )
echo "Температура в градусах Фаренгейта: $temp"

Я получил это сообщение об ошибке:

выражение: синтаксическая ошибка: неожиданный аргумент «Рабочий стол»

У вас есть решения?

Someone avatar
флаг my
Какая у вас версия Ubuntu? Пожалуйста, не могли бы вы [править] и добавить немного информации
Someone avatar
флаг my
Этот вопрос имеет серьезные проблемы с форматированием или содержанием. Этот вопрос вряд ли можно будет спасти путем редактирования, и, возможно, его придется удалить.
karel avatar
флаг sa
Текст сценария bash в вопросе был скопирован в мой ответ на этот вопрос.
Рейтинг:2
флаг hr

* символ представляет собой символ оболочки (генерация имени файла), он будет расширяться до списка нескрытых файлов в текущем каталоге - в вашем случае, который, по-видимому, включает Рабочий стол предмет.

Чтобы предотвратить это, вам нужно либо отключить подстановку оболочки, используя установить -f или же установить -o неглоб:

#!/бин/баш
установить -f
echo "Введите температуру в градусах Цельсия: "
читать по Цельсию
temp=$(выражение "$celsius" * 9/5 + 32 )
echo "Температура в градусах Фаренгейта: $temp"

либо цитируйте, либо избегайте * символ, чтобы сделать его буквальным:

#!/бин/баш
echo "Введите температуру в градусах Цельсия: "
читать по Цельсию
temp=$(expr "$celsius" \* 9/5 + 32 )
echo "Температура в градусах Фаренгейта: $temp"

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

Рейтинг:1
флаг sa

Исправлен bash-скрипт для преобразования входной температуры из градусов Цельсия в градусы Фаренгейта с использованием популярного До нашей эры терминальная программа вместо выражение в строке 4:

#!/бин/баш
echo "Введите температуру в градусах Цельсия: "
читать по Цельсию
temp=`echo "масштаб=1; $celsius*1.8 + 32" | до н.э. 
echo "Температура в градусах Фаренгейта: $temp"

До нашей эры для «базового калькулятора» - это язык калькулятора произвольной точности. bc гораздо более интуитивно понятен и прост в использовании, чем неуклюжая работа и возня с выражение синтаксическая ошибка. Значение шкала Функция — это количество цифр после запятой в выражении.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.