나는 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
.)