Bash에서 배열 확장을 위해 다중 문자 구분 기호를 어떻게 사용합니까?

와일드 카드

나는 질문을 가장 간단한 경우로 축소하고 있습니다. myscript.sh다음 내용 의 스크립트가 있다고 가정 해 보겠습니다 .

#!/bin/bash
IFS='%20'
echo "$*"

다음과 같이 명령을 실행하면 출력은 다음과 같습니다.

me@myhost ~ $ ./myscript.sh fee fi fo fum
fee%fi%fo%fum

이것은 bashman 페이지에 설명 된대로 예상되는 동작입니다 .

   *      Expands  to  the positional parameters, starting from one.  When
          the expansion occurs within double quotes, it expands to a  sin-
          gle word with the value of each parameter separated by the first
          character of the IFS special variable.  That is, "$*" is equiva-
          lent to "$1c$2c...", where c is the first character of the value
          of the IFS variable.  If IFS is unset, the parameters are  sepa-
          rated  by  spaces.   If  IFS  is null, the parameters are joined
          without intervening separators. 

그러나 내가 얻고 싶은 것은 출력입니다.

fee%20fi%20fo%20fum

따라서 단일 문자가 아닌 여러 문자 분리기 필드를 사용합니다.

기본적으로 이것을 수행하는 방법이 bash있습니까?


최신 정보:

아래 mikeserv의 데이터와 printf가 에코보다 나은 이유는 무엇입니까? , 결국 다음을 수행했습니다 (위의 예에서와 같이 가장 간단한 경우로 다시 축소됨).

#!/bin/bash
word="$1"
shift
if [ "$#" -gt 0 ] ; then
    word="$word$(printf '%%20%s' "$@")"
fi
printf '%s\n' "$word"
unset word
마이크 서브

printf출력시 뒤에 오는 각 인수에 형식 문자열을 적용합니다. 그것은이다 bash쉘 내장 및 인수 목록에 구분 기호 문자열을 적용 할 수 있습니다 -의 종류.

예를 들면 :

printf %s:delimit: arg1 arg2 arg3

arg1:delimit:arg2:delimit:arg3:delimit:

문제는 인수의 끝에 형식 문자열 적용을 중단printf 하지 않으므로 마지막 구분 기호가 추가됩니다. 다음과 같은 경우에 처리 할 수 ​​있습니다.

printf %b:delimit: \\0150 \\0145 \\0171\\c

h:delimit:e:delimit:y

printfC 및 8 진수 이스케이프를 %b특정 형식의 ytes로 해석 하고 특정 지점에서 출력을 출력 %b형식으로 해석 합니다. 따라서 형식 문자열이 표시 하는 것처럼 위의 y 뒤에 문자열을 사용하지 않습니다.\cprintf:delimit:

따라서 모든 인수를 문자 그대로 해석 하고 후행 구분 기호를 사용하지 않으려면 인수 목록 자체에서 문제를 해결해야합니다.

set -- arg1 arg2 arg3
for arg do shift
    set -- "$@" :delimit: "$arg"
done; shift
printf %s "$@"

arg1:delimit:arg2:delimit:arg3

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

XML 파일에서 특정 태그를 구문 분석하고 Bash를 사용하여 배열에 저장하려면 어떻게해야합니까?

분류에서Dev

문자열을 가져 오는 동안 '\ n'문자로 구분 된 다른 배열에 문자열을 복사하려면 어떻게해야합니까?

분류에서Dev

Fish shell에서 사용자 지정 구분 기호로 배열을 결합하려면 어떻게해야합니까?

분류에서Dev

Bash-단어를 구분하기 위해 awk를 사용하여 긴 문자열을 구문 분석합니다.

분류에서Dev

Javascript에서 "\\"또는 "/"를 구분 기호 (예 : 단일 정규식)로 사용하여 문자열을 배열로 분할하려면 어떻게해야합니까?

분류에서Dev

정규식 조건에 따라 구분 기호를 사용하여 VBA에서 배열을 분할하려면 어떻게해야합니까?

분류에서Dev

C에서 배열을 조작하기 위해 이중 포인터를 어떻게 사용합니까?

분류에서Dev

나중에 사용하기 위해 값을 2D 배열에 저장하려면 어떻게합니까?

분류에서Dev

Bash에서 대문자 및 대체를위한 매개 변수 확장을 어떻게 중첩합니까?

분류에서Dev

배열의 내용을 사용 가능한 변수에 할당하기 위해 사용자 지정 구조체를 어떻게 생성합니까?

분류에서Dev

PHP : 여러 번 반복되는 단일 구분 기호를 사용하여 문자열을 분해하려면 어떻게해야합니까?

분류에서Dev

따옴표 붙은 문자열을 구문 분석하기 위해 boost :: spirit에서 건너 뛰기를 어떻게 억제합니까?

분류에서Dev

어떻게 자바에서 배열로 분할 문자열을 저장하기 위해?

분류에서Dev

사용자 정의 구문을 통합하기 위해 Sublime의 언어 구문 이해를 확장하려면 어떻게해야합니까?

분류에서Dev

반복되는 구분 기호 내의 다양한 문자열에 대해 정규식 일치를 구성하려면 어떻게해야합니까?

분류에서Dev

나중에 jmeter에서 매개 변수로 사용하기 위해 json 배열을 문자열로 구문 분석하는 방법은 무엇입니까?

분류에서Dev

C ++에서 문자열의 문자 크기를 사용하여 문자열을 Char 배열로 변환하려면 어떻게해야합니까?

분류에서Dev

URL에있는 두 개의 특수 기호 중 하나를 구분 기호로 처리해야하는 경우 PHP를 사용하여 문자열에서 URL을 추출합니까 (첫 번째 문자 다음에 URL)?

분류에서Dev

fastparse에서 인용 된 정규식을 구문 분석하기 위해 구문 분석기를 구성하려면 어떻게해야합니까?

분류에서Dev

어떻게 문자열을 분할하고 구분 기호를 유지하기 위해 '='

분류에서Dev

열의 하위 문자열을 기반으로 대용량 파일에서 중복 된 줄만 저장하려면 어떻게해야합니까?

분류에서Dev

정규식을 사용하여 복잡한 구분 기호로 문자열을 어떻게 분할합니까?

분류에서Dev

R의 특정 문자 패턴 다음에 발생하는 구분 기호를 기반으로 다음 문자열 벡터를 어떻게 분할합니까?

분류에서Dev

문자열에서 단어를 검색해야합니다. 대소 문자를 구분하지 않으려면 어떻게해야합니까?

분류에서Dev

여러 구분 기호와 정수로 문자열을 분할하려면 어떻게해야합니까?

분류에서Dev

pyspark에서 배열의 각 요소를 구문 분석하고 하위 문자열을 적용합니다.

분류에서Dev

문자열에서 '1'과 '10'을 구별하기 위해 strpos ()를 어떻게 얻을 수 있습니까?

분류에서Dev

명확한 구분 기호없이 키-값 문자열을 어떻게 구문 분석합니까?

분류에서Dev

빈 줄에서 문자열을 어떻게 분해합니까?

Related 관련 기사

  1. 1

    XML 파일에서 특정 태그를 구문 분석하고 Bash를 사용하여 배열에 저장하려면 어떻게해야합니까?

  2. 2

    문자열을 가져 오는 동안 '\ n'문자로 구분 된 다른 배열에 문자열을 복사하려면 어떻게해야합니까?

  3. 3

    Fish shell에서 사용자 지정 구분 기호로 배열을 결합하려면 어떻게해야합니까?

  4. 4

    Bash-단어를 구분하기 위해 awk를 사용하여 긴 문자열을 구문 분석합니다.

  5. 5

    Javascript에서 "\\"또는 "/"를 구분 기호 (예 : 단일 정규식)로 사용하여 문자열을 배열로 분할하려면 어떻게해야합니까?

  6. 6

    정규식 조건에 따라 구분 기호를 사용하여 VBA에서 배열을 분할하려면 어떻게해야합니까?

  7. 7

    C에서 배열을 조작하기 위해 이중 포인터를 어떻게 사용합니까?

  8. 8

    나중에 사용하기 위해 값을 2D 배열에 저장하려면 어떻게합니까?

  9. 9

    Bash에서 대문자 및 대체를위한 매개 변수 확장을 어떻게 중첩합니까?

  10. 10

    배열의 내용을 사용 가능한 변수에 할당하기 위해 사용자 지정 구조체를 어떻게 생성합니까?

  11. 11

    PHP : 여러 번 반복되는 단일 구분 기호를 사용하여 문자열을 분해하려면 어떻게해야합니까?

  12. 12

    따옴표 붙은 문자열을 구문 분석하기 위해 boost :: spirit에서 건너 뛰기를 어떻게 억제합니까?

  13. 13

    어떻게 자바에서 배열로 분할 문자열을 저장하기 위해?

  14. 14

    사용자 정의 구문을 통합하기 위해 Sublime의 언어 구문 이해를 확장하려면 어떻게해야합니까?

  15. 15

    반복되는 구분 기호 내의 다양한 문자열에 대해 정규식 일치를 구성하려면 어떻게해야합니까?

  16. 16

    나중에 jmeter에서 매개 변수로 사용하기 위해 json 배열을 문자열로 구문 분석하는 방법은 무엇입니까?

  17. 17

    C ++에서 문자열의 문자 크기를 사용하여 문자열을 Char 배열로 변환하려면 어떻게해야합니까?

  18. 18

    URL에있는 두 개의 특수 기호 중 하나를 구분 기호로 처리해야하는 경우 PHP를 사용하여 문자열에서 URL을 추출합니까 (첫 번째 문자 다음에 URL)?

  19. 19

    fastparse에서 인용 된 정규식을 구문 분석하기 위해 구문 분석기를 구성하려면 어떻게해야합니까?

  20. 20

    어떻게 문자열을 분할하고 구분 기호를 유지하기 위해 '='

  21. 21

    열의 하위 문자열을 기반으로 대용량 파일에서 중복 된 줄만 저장하려면 어떻게해야합니까?

  22. 22

    정규식을 사용하여 복잡한 구분 기호로 문자열을 어떻게 분할합니까?

  23. 23

    R의 특정 문자 패턴 다음에 발생하는 구분 기호를 기반으로 다음 문자열 벡터를 어떻게 분할합니까?

  24. 24

    문자열에서 단어를 검색해야합니다. 대소 문자를 구분하지 않으려면 어떻게해야합니까?

  25. 25

    여러 구분 기호와 정수로 문자열을 분할하려면 어떻게해야합니까?

  26. 26

    pyspark에서 배열의 각 요소를 구문 분석하고 하위 문자열을 적용합니다.

  27. 27

    문자열에서 '1'과 '10'을 구별하기 위해 strpos ()를 어떻게 얻을 수 있습니까?

  28. 28

    명확한 구분 기호없이 키-값 문자열을 어떻게 구문 분석합니까?

  29. 29

    빈 줄에서 문자열을 어떻게 분해합니까?

뜨겁다태그

보관