Как я могу напечатать новую строку из функции bash - PullRequest
4 голосов
/ 27 июня 2011

У меня есть следующий фрагмент кода внутри файла сценария bash:

#! /bin/sh
#
# Usage:
#
# f.sh <start_directory> <destination_directory> <prepare_directory> <remote_host_for_copy> <remote_user>
#
print_correct_syntax() {

 echo "f.sh <start_directory> <destination_directory> <prepare_directory> <remote_host_for_copy> <remote_user>"
 echo ""
 echo '<start_directory> needs to be a full path, <destination_directory> needs to be full path, <prepare_directory> has to be relative to start_directory path'
 echo ""

}
# ---- end of function definition ----

# check number of run-time arguments given to script

if [ $# != 5 ]
then
 echo Wrong Syntax! $(print_correct_syntax)
 exit;
fi
#---------------------------------------------------

Команды echo с пустой строкой (echo "") внутри функции (print_correct_syntax), похоже, не работают.Наоборот, те же команды вне функции работают нормально.Как я могу напечатать пустой символ новой строки из функции bash?

Ответы [ 2 ]

5 голосов
/ 27 июня 2011

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

Другими словами, функция на самом деле генерирует пустые строки, но процесс обратного цитирования с $() преобразует их в пробелы, когда вы используете его в окончательном echo.

2 голосов
/ 27 июня 2011

Попробуйте заменить:

echo Wrong Syntax! $(print_correct_syntax)

по:

echo Wrong Syntax! "$(print_correct_syntax)"
...