현재 Caps Lock 상태를 가져오는 코드를 찾았습니다(이 노트북의 키보드에는 LED 표시기가 없기 때문에).여기.
#!/bin/bash
v=`xset -q | grep Caps`
echo ${v:7:17}
첫 번째 부분이 어떻게 작동하는지 이해합니다. 상태를 쿼리한 다음 "Caps" 문자열을 찾아 변수에 저장합니다. 내가 이해하지 못하는 것은 다음 줄입니다.
echo ${v:7:17}
이 줄은 Caps Lock 상태에 따라 "Caps Lock: off/on"을 간단히 인쇄합니다. 숫자와 콜론은 범위를 지정하여 불필요한 정보가 인쇄되지 않는 것 같지만 숫자는 내가 보는 방식으로 인쇄된 문자와 일치하지 않는 것 같습니다. 인쇄될 전체 줄은 다음과 같습니다.
00: Caps Lock: 꺼짐 01: Number Lock: 켜짐 02: Scroll Lock: 꺼짐
내가 묻는 것은 이 범위가 정확히 무엇을 지정하는가입니다. 본질적으로 를 의미합니까 v:start:end
? 사용 범위에 대한 정보를 찾아보았 echo
으나 아무것도 찾지 못했습니다. 내 시스템의 맨페이지에는 이에 대한 언급조차 없습니다 echo
.
답변1
바라보다하위 문자열 확장. 형식은 ${string:position:length}
다음과 같습니다.
$ x="123456789012345678901234567890"
$ echo ${x:0:0}
$ echo ${x:0:1}
1
$ echo ${x:0:2}
$ echo ${x:0:3}
123
$ echo ${x:1:3}
234
답변2
이건 ~에 대한 게 아닙니다 echo
. 껍질에 관한 것입니다. man bash
예를 들어, 이 명령을 사용하여 검색하면
man bash | grep -C5 {
이런 설명이 보이실 겁니다
${parameter:offset}
${parameter:offset:length}
Substring Expansion. Expands to up to length characters of the value of parameter starting at the character specified by
offset. If parameter is @, an indexed array subscripted by @ or *, or an associative array name, the results differ as
described below. If length is omitted, expands to the substring of the value of parameter starting at the character spec‐
ified by offset and extending to the end of the value. length and offset are arithmetic expressions (see ARITHMETIC EVAL‐
UATION below).
echo
하위 문자열만 인쇄하지만 printf
동일한 작업을 수행합니다.
전체 설명 man bash
:
${parameter:offset}
${parameter:offset:length}
Substring Expansion. Expands to up to length characters of the value
of parameter starting at the character specified by offset. If
parameter is @, an indexed array subscripted by @ or *, or an asso‐
ciative array name, the results differ as described below. If length
is omitted, expands to the substring of the value of parameter start‐
ing at the character specified by offset and extending to the end of
the value. length and offset are arithmetic expressions (see ARITH‐
METIC EVALUATION below).
If offset evaluates to a number less than zero, the value is used as
an offset in characters from the end of the value of parameter. If
length evaluates to a number less than zero, it is interpreted as an
offset in characters from the end of the value of parameter rather
than a number of characters, and the expansion is the characters
between offset and that result. Note that a negative offset must be
separated from the colon by at least one space to avoid being con‐
fused with the :- expansion.
If parameter is @, the result is length positional parameters begin‐
ning at offset. A negative offset is taken relative to one greater
than the greatest positional parameter, so an offset of -1 evaluates
to the last positional parameter. It is an expansion error if length
evaluates to a number less than zero.
If parameter is an indexed array name subscripted by @ or *, the
result is the length members of the array beginning with ${parame‐
ter[offset]}. A negative offset is taken relative to one greater
than the maximum index of the specified array. It is an expansion
error if length evaluates to a number less than zero.
Substring expansion applied to an associative array produces unde‐
fined results.
Substring indexing is zero-based unless the positional parameters are
used, in which case the indexing starts at 1 by default. If offset
is 0, and the positional parameters are used, $0 is prefixed to the
list.