![#!/bin/bash -x 또는 -v는 Ubuntu 20.04에서 stdout으로 인쇄되지 않습니다.](https://linux55.com/image/187213/%23!%2Fbin%2Fbash%20-x%20%EB%98%90%EB%8A%94%20-v%EB%8A%94%20Ubuntu%2020.04%EC%97%90%EC%84%9C%20stdout%EC%9C%BC%EB%A1%9C%20%EC%9D%B8%EC%87%84%EB%90%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
나는 bash에 대한 강좌를 진행하고 있는데 이것은 약간 오래된 것 같습니다. 아래에는 줄을 읽거나 실행할 때 줄을 볼 수 있게 해주는 간단한 스크립트가 있지만 내 콘솔에는 아무 것도 반환되지 않습니다. bartek_report.sh에 전달된 $1 매개변수는 콘솔이 중단될 때 어떤 일이 발생하는지 확인하고 싶기 때문에 의도적으로 누락되었습니다. 최신 우분투를 사용하세요.
#!/bin/bash -v #or -x
# creates a report for a single container
# exercise: add a variable called 'directory'
# that determines where we save our output file
directory="reports"
mkdir -p $directory
grep $1 shipments.csv > $directory/$1.csv
echo Report created in $directory under filename $1.csv
bash에서 스크립트를 호출하면 -x 또는 -v 없이 작동이 중단됩니다. 이유는 무엇입니까?
bartek@Lenovo-LAB~/Desktop/Devs/bash_learning/02/demos/after_m2$ sh bartek_report.sh
[blinking cursor]
답변1
스크립트를 실행할 쉘을 bash
명시적으로 지정했기 때문에 호출 스크립트를 사용하고 있지 않습니다 .sh
#!
맨 윗줄은 스크립트를 실행 가능하게 만들고 시스템의 다른 프로그램처럼 처리하는 경우에만 고려됩니다.
chmod a+x myscript # Make executable
./myscript # Run it
이미 언급했듯이코멘트이 답변 아래 에서 당신 -x
은 또한-v
표준 출력. 둘 다 디버깅 도구이며 메시지를 작성합니다.표준 에러유효한 일반 출력 흐름을 방해하지 않도록 합니다. (그래서 ./script >file
디버그 메시지가 터미널에 기록되고 정상적인 예상 출력이 기록됩니다 file
.)