Я НЕ связан с компанией, я очень довольный клиент. Попробуйте эту программу терминала: http://www.emtec.com/zoc/index.html . Также доступна версия для Mac.
Если я нарушу этим ответом какое-либо правило SE, сообщите мне, и я удалю ответ.
Изменить:
Когда я правильно понял другие ответы, эта проблема может быть вызвана терминальной программой. Терминальная программа ZOC - это профессиональное программное обеспечение, которое идеально подходит для работы. Он вставляет выделенный текст без дополнительных символов. Вы можете записывать свои сеансы в отдельный текстовый файл. И многое другое
Обновление:
В терминальной программе есть опция Вставить без заключительного символа новой строки
. Может быть, это поможет.
function func_name()
{
: '
Invocation: func_name $1 $2 ... $n
Function: Display the values of the supplied arguments, in double quotes.
Exit status: func_name always returns with exit status 0.
' :
local i
echo "func_name: $# arguments"
for ((i = 1; i <= $#; ++i)); do
echo "func_name [$i] \"$1\""
shift
done
return 0
}
Вы можете это сделать.
$ f() { This function does nothing. 2> /dev/null; }
$ f
$ type f
f is a function
f ()
{
This function does nothing. 2> /dev/null
}
Да, type
, похоже, выводит только те части функции, которые будут выполняться. Мне это кажется разумным, поскольку обычно это все, что вас интересует при запросе type
.
В качестве обходного пути, вместо использования комментариев, добавьте свои метаданные следующим образом:
func1() {
meta="This function was generated for project: PROJECT1"
echo "do my automation"
}
Нет необходимости когда-либо использовать эту переменную, но она появится при запросе функции с type
:
$ type func1
func1 is a function
func1 ()
{
meta="This function was generated for project: PROJECT1";
echo "do my automation"
}
Вы можете использовать nop встроенный :
. Кроме того, вам не нужно хранить его как переменную:
function f() {
: your metadata here
: "or here"
# do yours
}
EDIT: Остерегайтесь специальных символов в метаданных. Для чистого текста вы можете использовать:
: <<EOT
Your metadata text here.
EOT
EDIT: Вместо этого можно использовать глобальный ассоциативный массив для хранения всех метаданных функции:
declare -A METADATA=()
METADATA[fun1]='foo bar'
function fun1() {
echo I have some metadata: "${METADATA[$FUNCNAME]}"
}
METADATA[fun2]='baz you'
function fun2() {
echo I have some other metadata: "${METADATA[$FUNCNAME]}"
}
Таким образом, вам не нужно разбирать вывод declare
или type
, а только запрашивать ключ массива.