bettapy
@bettapy
Питонист, жабаскриптер

Почему при передаче аргумента в функцию у него обрезаются пробелы?

Добрый день, я только начинаю свой путь в bash, и сразу сталкиваюсь с проблемкой. Лучше просто покажу на примере. Условно есть примерно такой код:

#!/bin/sh

func() {
    echo -n $1
    read var
}

func "Введите значение: "


Я ожидаю, что будет всё красиво, после "Введите значение:" будет пробел, чтобы визуально отделять текст сценария от ввода пользователя, но по итогу получаю это:

66017e812b0bd432139835.png

Т.е просто срезается пробел. Можно ли этого как-то избежать? Или это конкретно проблема Void Linux?

P.S
Если не передавать строку как аргумент для функции, то всё нормально.

66017f1ed2e54716440888.png
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Как насчёт
func() {
    echo -n "$1"
    read var
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Возьмите параметр в кавычки, иначе команда echo не видит где заканчивается ваш параметр.
Ну и если версия баш не древняя, то команда read сама умеет промпт выводить типа
read -p "$1" var
Ответ написан
Комментировать
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
echo -n $1
интерпретирует аргументы перед передачей, поэтому может произвольно обращаться с переданной строкой. Чтобы получить строку неизменной - ее нужно "защитить" :)
echo -n "$1"
вот таким образом
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы