bash는 "IFS"변수의 값에 따라 동작을 변경합니다.

user267935

IFS변수를 bash공백으로 설정하면 여러 공백을 하나의 공백으로 취급합니다 ( myprogram받은 명령 줄 인수를 인쇄하는 프로그램).

IFS=" "
x="hello   hi   world"
./myprogram $x
argv[1] = hello
argv[2] = hi
argv[3] = world

그러나 IFS변수를 쉼표로 설정하면 bash여러 쉼표를 하나의 쉼표로 취급하지 않습니다.

IFS=","
x="hello,,,hi,,,world"
./myprogram $x
argv[1] = hello
argv[2] = 
argv[3] = 
argv[4] = hi
argv[5] = 
argv[6] = 
argv[7] = world

왜 그런 겁니까?

John1024

이것은에 문서화되어 man bash있습니다. IFS에서 공백이 아닌 문자의 단일 발생은 필드를 구분합니다.

에서 man bash:

쉘은 IFS의 각 문자를 구분 기호로 취급하고 이러한 문자를 필드 종결 자로 사용하여 다른 확장의 결과를 단어로 분할합니다. IFS가 설정되지 않은 경우, 또는 그 값이 정확히 경우 <space><tab><newline>다음의 순서 기본 <space>, <tab><newline>시작과 이전 확장의 결과의 끝에서 무시되고 IFS 문자의 순서가 아니라 시작 부분이나 끝 구분하는 역할을 말. IFS에 기본값이 아닌 값이있는 경우 공백 문자가 IFS (IFS 공백 문자) 값에있는 한 단어의 시작과 끝에서 공백 문자 공백, 탭 및 줄 바꿈의 시퀀스는 무시됩니다. ).IFS 공백이 아닌 IFS의 모든 문자는 인접한 IFS 공백 문자와 함께 필드를 구분합니다. 일련의 IFS 공백 문자도 구분 기호로 처리됩니다. IFS 값이 널이면 단어 분할이 발생하지 않습니다. [강조 추가.]

예 : 필드 분할

IFS에 공백 문자가 없으면 공백이 필드에 포함됩니다.

$ ( IFS=',' x='one , two,three'; printf "<%s>\n" $x )
<one >
< two>
<three>

IFS에 공백과 쉼표가 모두있는 경우 공백 시퀀스, 쉼표, 공백 시퀀스가 ​​단일 구분 기호로 처리됩니다.

$ ( IFS=' ,' x='one , two,three'; printf "<%s>\n" $x )
<one>
<two>
<three>

쉼표 시퀀스는 빈 필드 시퀀스로 해석됩니다.

$ ( IFS=' ,' x='one,,,two,three'; printf "<%s>\n" $x )
<one>
<>
<>
<two>
<three>

예 : 선행 및 후행 공백

IFS에 공백이 없으면 선행 및 후행 공백이 필드에 유지됩니다.

$ ( IFS=',' x='  one , two,three  ,'; printf "<%s>\n" $x )
<  one >
< two>
<three  >

IFS에 공백이 포함 된 경우 공백의 선행 또는 후행 시퀀스가 ​​제거됩니다.

$ ( IFS=' ,' x='  one , two,three  ,'; printf "<%s>\n" $x )
<one>
<two>
<three>

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Jenkins는 요일에 따라 선택 매개 변수 값을 자동으로 변경합니다.

분류에서Dev

extjs는 값에 따라 그리드 셀 배경을 변경합니다.

분류에서Dev

AngularJS는 드롭 다운 값 변경에 따라 선택을 추가합니다.

분류에서Dev

Javascript는 변수에 따라 html div 색상을 변경합니다.

분류에서Dev

CSS는 Javascript 조건에 따라 속성을 변경합니다.

분류에서Dev

jenkins는 요청에 따라 레이블을 변경합니다.

분류에서Dev

Entity Framework Save는 DbContext에 추가하는 방법에 따라 두 가지 동작을 변경합니다.

분류에서Dev

하나의 변수는 이전 변수에 따라 동적으로 변경됩니다.

분류에서Dev

입력하는 값에 따라이 입력 텍스트의 색상을 변경합니다.

분류에서Dev

자바 스크립트는 첫 번째에 따라 나머지 드롭 다운 값을 변경합니다.

분류에서Dev

값 변경을위한 SQL 쿼리는 ID에 따라 다릅니다.

분류에서Dev

값 변경을위한 SQL 쿼리는 ID에 따라 다릅니다.

분류에서Dev

QML Tableview는 행 내용에 따라 행 색상을 변경합니다.

분류에서Dev

Pandas는 여러 조건에 따라 여러 열을 변경합니다.

분류에서Dev

sqldf는 순서에 따라 숫자 열을 문자 1로 변경합니다.

분류에서Dev

MySQL PHP는 출력에 따라 텍스트 색상을 변경합니다.

분류에서Dev

TreeView는 파일 확장자에 따라 LeafNodeStyle.ImageUrl을 변경합니다.

분류에서Dev

Javascript-Lodash / Underscore는 두 개체를 비교하고 키에 따라 값을 변경합니다.

분류에서Dev

다른 변수의 값에 따라 변수의 값을 조건부로 변경하려면 어떻게해야합니까?

분류에서Dev

다른 열의 조건에 따라 열의 값을 합하고 값도 변경합니다.

분류에서Dev

sudo -u user bash는 작동하지만 $ HOME은 그에 따라 변경되지 않습니다.

분류에서Dev

R의 다른 행에있는 조건에 따라 새 열을 변경합니다.

분류에서Dev

Angular의 환경에 따라 index.html의 변수 값을 변경하는 방법

분류에서Dev

Python은 조건에 따라 DataFrame에서 행 값을 변경합니다.

분류에서Dev

$ .extend는 두 매개 변수의 값을 변경합니다.

분류에서Dev

다른 열의 조건에 따라 셀 값 변경을 대체하는 Python pandas

분류에서Dev

Inform7 : 플레이어가 어디에서 왔는지에 따라 방의 설명을 변경합니다.

분류에서Dev

다른 선택 옵션에 따라 표시되는 선택을 변경하고 동일한 옵션 값을 유지합니다.

분류에서Dev

팬더는 변수 값에 따라 변수를 추가합니다.

Related 관련 기사

  1. 1

    Jenkins는 요일에 따라 선택 매개 변수 값을 자동으로 변경합니다.

  2. 2

    extjs는 값에 따라 그리드 셀 배경을 변경합니다.

  3. 3

    AngularJS는 드롭 다운 값 변경에 따라 선택을 추가합니다.

  4. 4

    Javascript는 변수에 따라 html div 색상을 변경합니다.

  5. 5

    CSS는 Javascript 조건에 따라 속성을 변경합니다.

  6. 6

    jenkins는 요청에 따라 레이블을 변경합니다.

  7. 7

    Entity Framework Save는 DbContext에 추가하는 방법에 따라 두 가지 동작을 변경합니다.

  8. 8

    하나의 변수는 이전 변수에 따라 동적으로 변경됩니다.

  9. 9

    입력하는 값에 따라이 입력 텍스트의 색상을 변경합니다.

  10. 10

    자바 스크립트는 첫 번째에 따라 나머지 드롭 다운 값을 변경합니다.

  11. 11

    값 변경을위한 SQL 쿼리는 ID에 따라 다릅니다.

  12. 12

    값 변경을위한 SQL 쿼리는 ID에 따라 다릅니다.

  13. 13

    QML Tableview는 행 내용에 따라 행 색상을 변경합니다.

  14. 14

    Pandas는 여러 조건에 따라 여러 열을 변경합니다.

  15. 15

    sqldf는 순서에 따라 숫자 열을 문자 1로 변경합니다.

  16. 16

    MySQL PHP는 출력에 따라 텍스트 색상을 변경합니다.

  17. 17

    TreeView는 파일 확장자에 따라 LeafNodeStyle.ImageUrl을 변경합니다.

  18. 18

    Javascript-Lodash / Underscore는 두 개체를 비교하고 키에 따라 값을 변경합니다.

  19. 19

    다른 변수의 값에 따라 변수의 값을 조건부로 변경하려면 어떻게해야합니까?

  20. 20

    다른 열의 조건에 따라 열의 값을 합하고 값도 변경합니다.

  21. 21

    sudo -u user bash는 작동하지만 $ HOME은 그에 따라 변경되지 않습니다.

  22. 22

    R의 다른 행에있는 조건에 따라 새 열을 변경합니다.

  23. 23

    Angular의 환경에 따라 index.html의 변수 값을 변경하는 방법

  24. 24

    Python은 조건에 따라 DataFrame에서 행 값을 변경합니다.

  25. 25

    $ .extend는 두 매개 변수의 값을 변경합니다.

  26. 26

    다른 열의 조건에 따라 셀 값 변경을 대체하는 Python pandas

  27. 27

    Inform7 : 플레이어가 어디에서 왔는지에 따라 방의 설명을 변경합니다.

  28. 28

    다른 선택 옵션에 따라 표시되는 선택을 변경하고 동일한 옵션 값을 유지합니다.

  29. 29

    팬더는 변수 값에 따라 변수를 추가합니다.

뜨겁다태그

보관