Intereting Posts

Использование хеша в сценариях оболочки

Каковы применения хэш-символа в сценариях оболочки, не использующие их в комментариях или как $# ; какие другие виды использования?

Я хочу, чтобы grep содержание в каждой строке перед хешем, поскольку есть комментарии в той же строке, что и код.

Контекст приложения – в основном оболочка korn, система, которую я использую, – «лицензия неограниченного пользователя» HP-UX *** B.11.31 U ia64 ***** ».

# – специальный символ. Специальный символ определяется как символ, который имеет значение, выходящее за пределы его буквального значения. # используется для комментирования в Shell Script.

Однако есть исключения, например, #! называется «ша-бангом». Ша-бэнг во главе сценария (самые первые строки кода) сообщает вашей системе, что этот файл представляет собой набор команд, которые должны быть переданы указанному командному интерпретатору. Вот некоторые:

  #!/bin/sh #!/bin/bash #!/usr/bin/perl #!/usr/bin/tcl #!/bin/sed -f #!/bin/awk -f 

Команда может не следовать комментарию в той же строке. Нет способа прекращения комментария, чтобы «живой код» начинался в той же строке. Используйте новую строку для следующей команды.

Вот некоторые примеры:

 echo "The # here does not begin a comment." echo 'The # here does not begin a comment.' echo The \# here does not begin a comment. echo The # here begins a comment. echo ${PATH#*:} # Parameter substitution, not a comment. echo $(( 2#101011 )) # Base conversion, not a comment. 

Надеюсь, что это поможет, вы можете альтернативно использовать Google для использования # которым вы не знакомы.

В Kornshell существует много хеша ( # ), за исключением их использования в качестве комментариев; $# , ${#} , ${var#pat} , ${var##pat} , ${#var} , ${#arr[*]} , ${#arr[@]} , base#number (т.е. буквальные числа), и он может быть частью шаблонов, например [#] , или буквально в строках "...#..." , или как часть текстовых данных в «here-docs».

Более новые версии ksh также будут поддерживать $( n <# ) , ${var/#pat/str} , <<# , <# ((expr)) , ># ((expr)) , <#/pat , <##/pat и # имеет определенное значение в спецификаторах встроенных printf формата ksh.

(Возможно, я все еще пропустил одно или два приложения).

Рекомендации:

ksh93: http://www2.research.att.com/sw/download/man/man1/ksh.html

ksh88: http://www2.research.att.com/sw/download/man/man1/ksh88.html