Bash에서 확장된 문자열을 확장할 때
Background
Bash를 사용할 때 어떤 글이 언제 펼쳐질지 모르고, 실제적으로 기대와 다르게 쓰면 다시 쓰는 등 여러 가지 일을 해왔다.각자의 전개 기능 자체에 대해 설명하지 않는다[1].
참조된 문서 (bash v5.0의 man)
Main Contents
주요[2] 상하문은 다음과 같다.
!!
) ${VAR}
) $(cmd)
, `cmd` ) $((1+1))
) a{b,c}d
, {1..5}
) ~
) dir/*
, /dev/video[0-3]
) \n
) unquoted
""
' '
$' '
!!
oo
x
x
${VAR}
oo
x
x
$(cmd)
oo
x
x
$((1+1))
oo
x
x
a{b,c}d
ox
x
x
~
ox
x
x
dir/*
ox
x
x
\n
xx
x
o
Supplements
HERE DOCUMENTS
다음 텍스트를 Here Documents라고 합니다.
<<HERE
text
HERE
전개$
시스템 Expansion${VAR}
, $(cmd)
, $((1+1))
."double quoted"History Expansion 버전이 없습니다.또한 Here Docoments는 HERE 섹션에 single quote를 추가할 수도 있습니다.
<<'HERE'
text
HERE
이 경우 어떤 내용도 펼치지 않습니다("single quoted"와 같음).Backslash-Escaped Characters
$' '
에서 전개된 백스lash-escaped characters는 다음과 같다(man 인용)\a alert (bell)
\b backspace
\e
\E an escape character
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab
\\ backslash
\' single quote
\" double quote
\? question mark
\nnn the eight-bit character whose value is the octal value nnn (one to three octal digits)
\xHH the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)
\uHHHH the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits)
\UHHHHHHHH
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)
\cx a control-x character
와 echo -e
도 백스lash-escaped characters를 펼칠 수 있다.그러나 처리할 수 있는 문자열은 미묘하게 다르다.다음은 man에서 인용한 것입니다.\a alert (bell)
\b backspace
\c suppress further output
\e
\E an escape character
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab
\\ backslash
\0nnn the eight-bit character whose value is the octal value nnn (zero to three octal digits)
\xHH the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)
\uHHHH the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits)
\UHHHHHHHH
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits)
$" "
printf
와는 달리 $' '
도 있다.일반$" "
외에도 " "
와 같은 i18n의 문자열 교환 기능[6]을 사용할 수 있다.$ locale -a
C
C.UTF-8
en_GB.utf8
en_US.utf8
ja_JP.utf8
POSIX
$ export TEXTDOMAIN=bash
$ export LANG=en_US.UTF-8
$ echo $"Done"
Done
$ gettext -s Done
Done
$ export LANG=ja_JP.UTF-8
$ echo $"Done"
終了
$ gettext -s Done
終了
참조: https://www.linuxjournal.com/content/internationalizing-those-bash-scripts또한
gettext
백스lash-escaped characters를 펼치지 않습니다.각주
그런데 특히Parameter Expansion 같은 건 잘 알려지지 않았지만 편리한 기능이 많아서 셸 스크립트를 쓰는 분들에게 man↩︎을 추천합니다.
독단과 편견↩︎
정식 이름이 아니에요↩︎
독단과 편견↩︎
일반적인 전개라는 단어는 사용하지 않지만 총괄↩︎
locale 설정 필요↩︎
Reference
이 문제에 관하여(Bash에서 확장된 문자열을 확장할 때), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/takc923/articles/0176c775f685c294e971텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)