반응형
bash에서 die "error msg"와 동등한 것이 있습니까?
Perl에서는 die "some msg"
. bash에 동등한 단일 명령이 있습니까? 지금은 명령을 사용하여이 작업을 수행하고 있습니다.echo "some msg" && exit 1
당신은 충분히 쉽게 자신을 굴릴 수 있습니다.
die() { echo "$*" 1>&2 ; exit 1; }
...
die "Kaboom"
여기에 제가 사용하고있는 것이 있습니다. 도서관에 넣기에는 너무 작아서 수백 번 타자를 쳤 나봐요 ...
warn () {
echo "$0:" "$@" >&2
}
die () {
rc=$1
shift
warn "$@"
exit $rc
}
용법: die 127 "Syntax error"
이것은 perl의 "die"에 매우 가까운 함수입니다 (하지만 함수 이름이 있음) :
function die
{
local message=$1
[ -z "$message" ] && message="Died"
echo "$message at ${BASH_SOURCE[1]}:${FUNCNAME[1]} line ${BASH_LINENO[0]}." >&2
exit 1
}
그리고 내장 함수가 실패하면 죽는 bash 방법 (함수 이름 포함)
function die
{
local message=$1
[ -z "$message" ] && message="Died"
echo "${BASH_SOURCE[1]}: line ${BASH_LINENO[0]}: ${FUNCNAME[1]}: $message." >&2
exit 1
}
따라서 Bash는 필요한 모든 정보를 여러 환경 변수에 보관합니다.
- LINENO-현재 실행 된 줄 번호
- FUNCNAME-함수 호출 스택, 첫 번째 요소 (인덱스 0)는 현재 함수, 두 번째 (인덱스 1)는 현재 함수를 호출 한 함수입니다.
- BASH_LINENO-해당 FUNCNAME이 호출 된 줄 번호의 호출 스택
- BASH_SOURCE-해당 FUNCNAME이 저장된 소스 파일의 배열
네, 그렇게하는 방법입니다.
에코가 성공했는지 여부를 종료하고 싶기 때문에 && 대신 세미콜론이나 개행 문자를 사용할 수 있습니다 (무엇이 실패하게 만드는지는 확실하지 않지만).
셸에서 프로그래밍한다는 것은 한 가지를 잘 수행하는 작은 명령 (일부 내장 명령, 일부 작은 프로그램)을 많이 사용하고 파일 리디렉션, 종료 코드 논리 및 기타 접착제와 연결하는 것을 의미합니다.
모든 것이 함수 나 메서드를 사용하여 수행되는 언어에 익숙하다면 이상하게 보일 수 있지만 익숙해집니다.
# echo pass params and print them to a log file
wlog(){
# check terminal if exists echo
test -t 1 && echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*"
# check LogFile and
test -z $LogFile || {
echo "`date +%Y.%m.%d-%H:%M:%S` [$$] $*" >> $LogFile
} #eof test
}
# eof function wlog
# exit with passed status and message
Exit(){
ExitStatus=0
case $1 in
[0-9]) ExitStatus="$1"; shift 1;;
esac
Msg="$*"
test "$ExitStatus" = "0" || Msg=" ERROR: $Msg : $@"
wlog " $Msg"
exit $ExitStatus
}
#eof function Exit
참고 URL : https://stackoverflow.com/questions/7868818/in-bash-is-there-an-equivalent-of-die-error-msg
반응형
'IT Share you' 카테고리의 다른 글
PHP5 객체가 참조로 전달됩니까? (0) | 2020.11.21 |
---|---|
String은 기본 유형입니까? (0) | 2020.11.21 |
파이썬에서 논리 문 NOT AND & OR의 우선 순위 (0) | 2020.11.21 |
asp.net 코어 webapi 컨트롤러에서 요청 본문을 읽는 방법은 무엇입니까? (0) | 2020.11.21 |
ASP.NET MVC의 오류 처리 (0) | 2020.11.21 |