ksh의 첨자에서 반환 값

ksh의 첨자에서 반환 값

아래와 같이 스크립트 내부에서 스크립트를 호출하고 싶습니다.

weeknum=$(getweek )

여기서 getweek는 스크립트 파일입니다. Weeknum에 값을 반환하도록 아래 첨자 파일을 작성하는 방법. 반환 또는 종료를 사용하고 상태를 반환 값으로 입력해야 합니까?

답변1

이런 용도 로 잘 활용하시면 됩니다 echo.

$ cat new
echo 1
$ number=$(./new)
$ echo $number
1

나는 이것이 그 목적을 달성한다고 생각합니다. 또한 new위 내용은 작성하려는 스크립트라는 점에 유의하세요.

제가 잘못 생각한 것이 있다면 아래에 댓글을 달아주세요.

답변2

구문 $(cmd)캡처표준 출력(후행 줄 바꿈 제거 cmd).

따라서 여러분이 해야 할 일은 getweek정보를 출력하는 것뿐입니다.

#! /bin/sh -
date +%V # or %U or %W

date에서 상속받은 주 번호를 stdout에 출력합니다 sh. 이 경우 weeknum=$(getweek)쉘은 이를 파이프 또는 소켓 쌍으로 설정하고 다른 쪽 끝에서는 쉘이 출력을 읽어 변수에 저장합니다 weeknum.

종료 상태에서 주 번호를 반환할 수도 있습니다.

#! /bin/sh -
exit "$(date +%W)"

다음을 통해 얻을 수 있습니다:

getweek
weeknum=$?

그러나 나는 이에 반대한다고 조언합니다. 종료 상태는 오류 보고를 위해 예약되거나 true/false 값으로 제한되어야 합니다.

일반적으로 위에서 오류가 발생하거나(프로세스를 포크하거나 실행하는 동안 date) sh프로세스가 종료되면 0이 아닌 종료 상태를 얻게 되며 이는 다음과 같이 처리되어서는 안 됩니다.주 번호.

답변3

이것을 시도해 볼 수 있습니다

output=$(sh <scriptname>)

이 경우 목표 달성에 도움이 되는 함수를 스크립트에 작성해 볼 수도 있을 것 같습니다.

답변4

표준 출력에 값을 할당하고 읽으려면 임의의 명령을 사용하십시오.

# 일부 첨자
# 뭔가를 해라
echo "내 값은 여기에 있습니다." # echo는 표준 출력에 무언가를 넣는 방법입니다.

실행 권한을 부여합니다. 아래첨자의 경우:

chmod a+rx 일부 첨자

그리고 그것을 사용

val=$(./일부 아래 첨자)
echo "$val" # 여기에 내 값이 반영됩니다.

return 및 종료는 호출자에게 가능한지 여부를 알려주는 데 사용됩니다. 반환 값에는 적용되지 않습니다.

관련 정보