Usos do hash no shell script [closed]

2

Quais são os usos do caractere hash no shell script além de usá-los em comentários ou como $# ; Quais são os outros usos?

Eu quero poder grep do conteúdo de cada linha antes do hash, pois há comentários na mesma linha do código.

O contexto do aplicativo é principalmente korn shell, o sistema que eu uso é "HP-UX *** B.11.31 U ia64 ***** licença para usuário ilimitado".

    
por user3146086 14.03.2015 / 11:35

2 respostas

6

# é um caractere especial. Um caractere especial é definido como um caractere que possui um significado além de seu significado literal. # é usado para comentar em um Shell Script.

No entanto, há exceções, por exemplo, como #! é chamado de "sha-bang". Um sha-bang está na cabeça de um script (as primeiras linhas de código) diz ao seu sistema que este arquivo é um conjunto de comandos a serem alimentados ao interpretador de comandos indicado. Aqui estão alguns:

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

Um comando pode não seguir um comentário na mesma linha. Não há nenhum método para finalizar o comentário, para que o "código ao vivo" comece na mesma linha. Use uma nova linha para o próximo comando.

Aqui estão alguns exemplos:

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.

Espero que isso ajude, você pode, alternativamente, usar especificamente o # do Google com o qual não está familiarizado.

    
por 14.03.2015 / 14:05
3

Há muito hash ( # ) usado no Kornshell além de seu uso como um começo de comentários; $# , ${#} , ${var#pat} , ${var##pat} , ${#var} , ${#arr[*]} , ${#arr[@]} , base#number (isto é, números literais) e pode fazer parte de padrões, por ex. [#] , ou literalmente em strings "...#..." , ou como parte dos dados de texto em "here-docs".

As versões mais recentes do ksh também suportarão $( n <# ) , ${var/#pat/str} , <<# , <# ((expr)) , ># ((expr)) , <#/pat , <##/pat e # têm um significado específico em% builtin do kshprintf especificadores de formato.

(Eu ainda posso ter perdido uma ou duas aplicações.)

Referências:

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

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

    
por 14.03.2015 / 14:14