쉘 스크립트에서 해시 사용 [닫기]

쉘 스크립트에서 해시 사용 [닫기]

주석이나 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, 도 지원하며 <##/patksh #의 내장 형식 지정자에서 특정 의미를 갖습니다 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

관련 정보