![쉘 스크립트에서 해시 사용 [닫기]](https://linux55.com/image/5076/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%ED%95%B4%EC%8B%9C%20%EC%82%AC%EC%9A%A9%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
주석이나 as에서 해시 문자를 사용하는 것 외에 쉘 스크립트에서 해시 문자를 사용하는 다른 용도는 무엇입니까 $#
? 또 어떤 용도가 있나요?
grep
같은 코드 줄에 주석이 있기 때문에 해싱하기 전에 각 줄의 내용을 얻을 수 있기를 원합니다 .
응용프로그램 컨텍스트는 주로 korn shell이고, 제가 사용하고 있는 시스템은 "HP-UX ***B.11.31 U ia64 ***** Unlimited User License"입니다.
답변1
#
특수 문자입니다. 특수 문자는 문자 그대로의 의미 이상의 의미를 갖는 문자로 정의됩니다. #
쉘 스크립트에서 주석 처리하는 데 사용됩니다.
#!
그러나 소위 "샤방(sha-bang)"이라는 예외도 있습니다 . sha-bang은 스크립트 시작 부분(코드의 첫 번째 줄)에 위치하며 해당 파일이 지정된 명령 해석기에 입력될 명령 집합임을 시스템에 알려줍니다. 다음은 일부입니다:
#!/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을 검색할 수도 있습니다 .
답변2
#
$#
주석 의 시작 부분으로 사용되는 것 외에도 Kornshell에서 해시( )는 다양한 용도로 사용됩니다 ${#}
( ${var#pat}
예 : 리터럴 ${var##pat}
숫자 ) . 리터럴 문자열 또는 "here-docs"의 텍스트 데이터의 일부입니다.${#var}
${#arr[*]}
${#arr[@]}
base#number
[#]
"...#..."
$( n <# )
최신 버전의 ksh는 , ${var/#pat/str}
, <<#
, <# ((expr))
, ># ((expr))
, <#/pat
, 도 지원하며 <##/pat
ksh #
의 내장 형식 지정자에서 특정 의미를 갖습니다 printf
.
(아직 신청서 한두 개를 놓쳤을 수도 있습니다.)
인용하다:
ksh93:http://www2.research.att.com/sw/download/man/man1/ksh.html
ksh88:http://www2.research.att.com/sw/download/man/man1/ksh88.html