Вы сказали, что пытались
echo -n "-"
который должен работал. На самом деле, я подозреваю, что так оно и было.
Проблема может заключаться в том, что у вас нет новой строки в самом конце вывода. С переходом к
echo -n "-"
ваш сценарий должен напечатать 5 -
символов без символа новой строки. Вывод, возможно, был скроен приглашением оболочки, напечатанным после завершения вашего скрипта.
Как быстро тест, попробуйте добавить
sleep 5
в конце сценария и посмотреть, если появится -----
. Через 5 секунд посмотрите, что произойдет, когда будет напечатано следующее приглашение оболочки.
Попробуйте это:
#!/bin/bash
loop=1;
while [ $loop -lt 5 ]
do
echo -n "-"
let loop=loop+1
done
echo ""
Итоговые echo ""
печатает только символ новой строки.
Некоторые другие вещи, чтобы отметить:
отступов важно, особенно для более крупных и более сложных сценариев. Он показывает структуру вашего кода с первого взгляда и делает его намного легче читать.
В коде вашего вопроса у вас есть место перед #!/bin/bash
. #!
распознается только в самом начале строки. Без действительной строки #!
ваш скрипт будет выполнен по /bin/sh
, а не по /bin/bash
. В этом случае это, вероятно, не имеет значения, поскольку вы не используете какие-либо специфичные для bash функции. Возможно, это была ошибка, когда вы разместили вопрос, но не забудьте проверить свой фактический сценарий и удалить пространство, если оно есть.
Команда echo
существует в разных версиях. Он встроен в большинство оболочек, а также доступен как отдельный исполняемый файл /bin/echo
. Различные версии могут иметь тонко различное поведение, в котором они распознают параметры и синтаксис специальных символов. Поддержка опции -n
для печати строки без прерывания новой строки, вероятно, почти универсальный.
Команда printf
(аналогичная функции C printf()
) также существует в нескольких реализациях, но ее поведение намного более последовательное. Безопаснее использовать printf
, а не echo
, если вы делаете что-то большее, чем печатание простого однострочного сообщения. Опять же, это, вероятно, не будет иметь значения в этом случае, но хорошо иметь в виду.
Как это связано с powershell? – Matt
Я начинаю раковину. «Powershell» также появился в качестве предложений к тегам. Я действительно знаю разницу между оболочкой и powershell. – user3624000
Вы всегда можете навести курсор на теги, и он даст вам описание. Я удалил тег и добавил [tag: bash], поэтому нужные люди найдут ваш вопрос. – Matt