디스플레이 출력 범위를 다시 가져옵니다.

디스플레이 출력 범위를 다시 가져옵니다.

현재 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.

관련 정보