스크립트 기능의 sed 명령이 작동하지 않습니까?

스크립트 기능의 sed 명령이 작동하지 않습니까?

sedASCII 1을 다음으로 바꾸는 명령줄이 있습니다 |.

sed -e 's/^A/\|/g' file_name

이것은 작동합니다. 그러나 bash 파일의 함수에 넣으면 다음과 같습니다.

func(){
    sed -e 's/^A/\|/g'
}

작동하지 않습니다:

func file_name

파일을 표시하는 대신 정지됩니다.

내가 실수했나요? 내 bash가 확실히 로드되도록 새 터미널을 열었습니다.

답변1

이를 입력 매개변수로 처리 해야 합니다 file_name. 함수의 명령에 마법처럼 적용되는 것이 아닙니다.

func() {
    sed -e 's/^A/\|/g' "$1"
}

전달된 첫 번째 매개변수는 에 저장되고 $1, 두 번째 매개변수는 에 저장되는 $2식입니다.

이것은 귀하의 버전에서 작동합니다. btw:func < file_name

답변2

실제로는 걸리지 않습니다. 입력을 기다립니다 :-)

당신이 이것을 하든가

func() # replace something in the file, i.e. modify it
{
    sed -e 's/^A/\|/g' -i "$1"
}

아니면 이거

func() # output the contents of the file to console after applying sed
{
    sed -e 's/^A/\|/g' < "$1"
}

또한 bash/POSIX 쉘은 C가 아닙니다.

관련 정보