내 문제는 bash 스크립트를 작성할 때 화면에 인쇄할 수 없다는 것입니다.
. myBashScript.sh < text.txt
그냥 myBashScript.sh
인쇄해서 써요
echo $2
그러나 "text.txt"를 인쇄하는 대신 "newLine"이 표시됩니다. 내가 아는 한, "<"는 새로운 줄입니다.
왜 $2
안 돼 text.txt
?
답변1
실제로 입력하고 있다고 가정합니다.
./myBashScript.sh < text.txt
슬래시를 사용합니다.
이를 실행하면 ./myBashScript.sh < text.txt
대화형 셸이 실제로 < text.txt
이를 캡처하고 특수 명령으로 해석합니다. 특히 명령줄을 해석하여 text.txt .sh에 연결된 표준 입력을 사용하여 myBashScript를 실행해야 한다는 의미로 해석합니다. 그러면 < text.txt
명령줄에서 셸이 제거되고 제어권이 myBashScript.sh로 전달됩니다. 따라서 쉘 스크립트에 관한 한 인수는 0개이고 $2
비어 있습니다. 귀하의 스크립트는 단순히 다음과 같이 번역됩니다.
echo
개행 문자를 인쇄합니다.
실제로 파일 이름을 인쇄하려면 다음을 고려해야 합니다.
#!/bin/sh
echo $1
그런 다음 다음을 실행할 수 있습니다.
$ ./myShellScript text.txt
text.txt
반면, 파일 내용을 인쇄하려면 cat(1)을 사용해야 합니다. 쉘 스크립트는 다음과 같습니다.
#!/bin/sh
cat $1
그런 다음 다음을 실행할 수 있습니다.
$ ./myShellScript text.txt
Hello from text.txt, a file containing a bunch of test strings.