stdin을 stdout으로 리디렉션


2

나는 myscript.sh와 같은 스크립트를 가지고 있으며 stdin에서 얻는 것을 stdout (예 : 고양이)으로 리디렉션해야합니다.

예를 들면 다음과 같습니다.

myscript.sh < myfile.txt > myfile2.txt

이것을하는 방법?

또한 stdout을 myfile2.txt 대신 다른 파일로 어떻게 리디렉션 할 수 있습니까?

내 시도 :

나는 다음을 사용하려고 시도했다.

echo $*

그리고 그것은 다음을 사용하여 작동합니다 :

myscript.sh | cat myfile.txt

내가 사용하는 경우 :

myscript.sh < myfile.txt

아무것도 인쇄하지 않습니다

답변:


3

나는 당신이 원하는 것을 이해할 수 없습니다 : $ *는 위치 매개 변수를 출력하고 아무것도 제공하지 않았으므로 출력을 얻지 못했습니다 (줄 바꾸기 제외).

cat나열 할 파일이 제공 될 때 표준 입력을 읽지 않으므로 myscript.sh | cat myfile.txt다음과 같은 효과가 있습니다 myscript.sh ; cat myfile.txt(엄격하지는 않지만 입력 / 출력 측면에서 정확함).

스크립트가 입력을 출력으로 복사하려면 간단히 포함해야합니다 cat.

$ *에서 출력하려면을 실행해야합니다 myscript.sh {parameters}.

"stdout을 myfile2.txt가 아닌 다른 파일로 리디렉션"이란 무엇을 의미합니까? 당신은 아마 의미하지 않습니다 ... > myfile3.txt.


4

cat <&0리디렉션 작업을 수행 할 스크립트를 스크립트에 추가 하십시오.

&0위가 나타내는 stdin파일 기술자를, 당신은 기본적으로 당신이에서 얻을 것을 려구요 stdin로를 cat.

또는 다음 루프를 사용하여 직접 수행하십시오.

while read line
do
  echo "$line"
done

0

스크립트 입력을 리디렉션하지 않고 터미널 출력 에 복제 하려고합니다 .

cat myfile.txt | tee /dev/tty | myscript.sh > myfile2.txt

또는 더 간단한

cat myfile.txt; myscript.sh < myfile.txt > myfile2.txt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.