쉘프로그래밍에서...

notohs의 이미지

    <span>131          exec 3>&1</span>
    132          value=`$DIALOG --ok-label "OK" \
    133                         --backtitle "$backtitle" \
    134                         --form "계정관리" \
    135                         8 40 0 \
    136                         "계정 추가:" 1 1  "" 1 11 10 0 \
    137                         "코멘트:"  2 1  "" 2 11 40 0 \
    <span>138                         2>&1 1>&3`</span>
    139                         retval=$?
    <span>140          exec 3>&-</span>

위 소스코드에서 131, 138, 140 라인이 의미가 각각 어떻게 되나요?

입력을 받는 부분인 것까지는 알겠는데, 각 라인이 의미하는 바가 어떻게 되는지 궁금합니다.

도와주세요.ㅠㅠ

planetarium의 이미지

2>&1 의 의미는
2번 파일 디스크립터 (stderr) 를 1번 파일 디스크립터 (stdout) 으로 연결하는 것입니다.
마찬가지로 1>&3 은 표준 출력을 3번 디스크립터로 연결하는 거고,
그 이전에 131번 라인에서 3번 디스크립터가 1번(stdout) 으로 연결되어 있으니 결과적으로 화면에 출력되겠네요.
...일부러 꼬아둔 걸까요?