이 특정 bash 스크립트에서 이 파이프 명령이 작동하지 않는 이유는 무엇입니까?

이 특정 bash 스크립트에서 이 파이프 명령이 작동하지 않는 이유는 무엇입니까?

파이프 명령을 사용한 후 스크립트가 test.sh작동하지 않습니다. 결과는 아무것도 표시되지 않습니다. 왜?

#!/bin/bash

fun=$( echo $1 )
echo "$fun"

명령은 다음과 같습니다.

$ echo 1 | ./test.sh

답변1

스틸드라이버 말이 맞다. 당신이 해야 할 일은:

  1. 표준 입력을 읽으려면 다음 명령을 사용하십시오.

    #!/bin/bash
    
    fun=$(cat)
    echo "$fun"  
    

    또는 간단하게:

    #!/bin/bash
    
    cat
    
  2. 또는 표준 입력을 위치 인수로 변환하려면 다음을 사용하십시오.xargs:

    $ echo 1 | xargs ./test.sh
    
  3. 또는 스크립트를 사용해야 하는 방식(코딩된 대로)으로 사용하십시오.

    ./test.sh 1
    

답변2

대신 이렇게 하세요

#!/bin/bash
echo "$@"

그럼 이렇게 실행해 보세요

./test.sh 1

echo 됩니다 1. 너무 복잡하게 만들지 마세요. 게다가 그냥 사용해 보는 건 어떨까요 echo? 이 스크립트를 사용할 이유가 없습니다.

관련 정보