오류가 있습니다 명령을 실행 여부를 확인할 방법은 없나?
예:
test1=`sed -i "/:@/c connection.url=jdbc:oracle:thin:@$ip:1521:$dataBase" $search`
valid $test1
function valid () {
if $test -eq 1; then
echo "OK"
else echo "ERROR"
fi
}
하지만 이미 시도해 봤는데, t apc® isn& # 39 이 일을 할 것으로 보인다. 내가 어떻게 don& # 39, t iqn.
반환 값은 저장됩니까 '$?'. 0 이면 성공, 다른 error: 나타냅니다.
some_command
if [ $? -eq 0 ]; then
echo OK
else
echo FAIL
fi
다른 출력본 디바이스처럼 변수에 값을 저장할 수 있습니다, 향후 비교:
some_command
retval=$?
do_something $retval
if [ $retval -ne 0 ]; then
echo "Return code was not zero but $retval"
fi
가능한 비교 연산자 http://schmidt. devlib. ['test' 양반이군요] (http://manpages.ubuntu.com/manpages/maverick/en/man1/test.1.html).
경우에만 다운로드되었는지 명령을 할 수는 없는 노릇 '$ # 39 don& 성공 또는 실패, 단순한 테스트 테스트?' 명령을 직접. E. g.:
if some_command; then
printf 'some_command succeeded\n'
else
printf 'some_command failed\n'
fi
if output=$(some_command); then
printf 'some_command succeded, the output was «%s»\n' "$output"
fi
'http://mywiki.wooledge.org/BashGuide/TestsAndConditionals' 의 경우 좀 더 상세히 설명합니다.
command && echo OK || echo Failed
$? 종료 상태 포함해야 합니다 이전 명령, 있어야 할 제로 '를 오류가 없습니다.
따라서 같은 일이.
cd /nonexistant
if [ $? -ne 0 ]
then
echo failed
else
echo success!
fi
대부분의 경우 더 쉽게 사용할 수 있는 # 39 의 it& & &; 체인으로 명령의세 chunghwa 하는 상호 종속적입니다. 그래서 'cd / 노나시스탕 & &; 나누기 전에 없는 것 때문에 에코 에코 성공! '성공 명령을 & &;). 이 이며, 여기서 '에코' 이 따름정리 cd / 노나시스탕 페일오버합니다 죽이려하겠어요 에코 페일오버합니다 같도다라고 cd 못했습니다. (이) 가 사용할 때 유용합니다 같은 일이 되는 경우 종료하십시오 종료하십시오 스크립트입니다 이전 명령으로 못했습니다.)
'If.then.fi' 과 ',' / '& & 점에 주의해야 한다.' 유형의 외곽진입 계약을 종료 상태 반환되었습니다 명령에 의해 저희에게는힘과 테스트하려면 (성공 시 0); 그러나 일부 명령의세 don& # 39, t, t 계약을 한 상태 또는 couldn& 실패했습니다. 경우 넌제로 복귀하십시오 종료하십시오 명령을 # 39 입력입니다. 즉, 일반적인 경우 '와', ',' / ',' # 39 & & 외곽진입 won& 사람들을 위해 특정 명령의세 빗나갔다.
예를 들어, GNU '의 경우 리눅스 파일' 아직 존재하지 않는 파일 찾기 '와' 0 인 종료하므로 인수로 받은 couldn& # 39, 사용자가 지정한 파일을 찾을 수 없다.
$ find . -name "not_existing_file"
$ echo $?
0
$ file ./not_existing_file
./not_existing_file: cannot open `./not_existing_file' (No such file or directory)
$ echo $?
0
이런 경우, 우리가 할 수 있는 한 방법으로 핸들을 stdin '메시지' / '에서' 표준에러출력 판독값 상황은 그 반환되었습니다 파일 '명령 또는 구문 분석 결과에 의해, 예를 들어' 명령 '찾기' 등. 이를 위해 '케이스' 기술서임을 목적으로 사용할 수 있습니다.
$ file ./doesntexist | while IFS= read -r output; do
> case "$output" in
> *"No such file or directory"*) printf "%s\n" "This will show up if failed";;
> *) printf "%s\n" "This will show up if succeeded" ;;
> esac
> done
This will show up if failed
$ find . -name "doesn'texist" | if ! read IFS= out; then echo "File not found"; fi
File not found
다른 많은 답변 설명한 것처럼 간단한 테스트를 할 것이라고, 이 같은 '$?'
if [ $? -eq 0 ]; then something; fi
, 실패했습니다. 테스트하려면 명령이 스케쳐내 짧은 버전을 사용할 수 있습니다 '배시' (그러나 무엇보다 오버킬) 다음과 같습니다.
if (($?)); then something; fi
이 작품을 통해 ' ())' '성공', 즉 산술 모드 도왔으매 명령이 반환되었습니다 '$? = 0 '다음' ((0)) 로 평가되는 '거짓' 테스트 '로, 그렇지 않으면 어떤 테스트가 반환되므로' true '.
, 테스트하려면 성공을 위해 사용할 수 있습니다.
if ! (($?)); then something; fi
하지만 이미 it& # 39 의 첫 번째 예는 별로 짧은 편이다.
execute [INVOKING-FUNCTION] [COMMAND]
execute () {
error=$($2 2>&1 >/dev/null)
if [ $? -ne 0 ]; then
echo "$1: $error"
exit 1
fi
}