트랩에 대해 읽고 있었지만 내 쉘 스크립트에서는 return만 작동했기 때문에 반환되는 상태나 코드가 무엇인지 알고 싶었습니다.
#!/bin/bash
seeOutput=`return`
echo $seeOutput
새 줄을 반환하고 터미널에서 완료되면 다음과 같이 표시됩니다.
-bash: return: can only `return' from a function or sourced script
나는 이미 그것을 알고 있습니다 :p 단지 "return"의 종료 상태를 알아야 합니다.
답변1
당신이 하고 있는 일은 return
말도 안되는 쉘 명령을 호출하는 것입니다. 일반적으로 return
후속 값이 없으면 마지막으로 실행된 명령의 종료 상태가 반환됩니다.
From man
: 함수를 종료하고 n으로 지정된 반환 값을 반환합니다. n이 생략되면 반환되는 상태는 함수 본문에서 마지막으로 실행된 명령의 상태입니다.
답변2
반환 코드는 $?에 저장됩니다.
false ; echo $?
true ; echo $?
돌아올 것이다
1
0
유닉스 규칙은 0은 OK를 의미합니다. 귀하의 예에서 seeOuput은 나중에 참조되는 명령의 모든 출력을 저장합니다.
출력 및 반환 코드가 잘못되지 않도록 하세요.
답변3
이것이 내가 사용하는 방법입니다:
f()
{
ls $AAA
return $?
}
g()
{
f
return $?
}
d()
{
g
echo $?
}
AAA=
d
_
<contents of dir>
0
_
AAA=sdsasdasd
d
_
ls: sdsasdasd: No such file or directory
2