내 로컬 컴퓨터에 스크립트가 있습니다. 스크립트에서 SSH를 통해 슬레이브에 대한 연결을 설정하고 슬레이브에서 빌드 스크립트를 실행합니다.
ssh $user@$slave_ip bash $dest_root/$dest_dir/slave_run
상위 스크립트 변수의slave_run 스크립트에서 반환된 종료 코드를 캡처하는 방법이 있습니까?
답변1
귀하의 명령(큰따옴표 추가):
ssh "$user@$slave_ip" bash "$dest_root/$dest_dir/slave_run"
$?
종료 코드는 명령을 실행한 후 캡처됩니다.
예:
$ ssh someserver sh -c 'false'
$ echo $?
1
캡처하려면:
$ ssh someserver somecommand
$ code=$?
또는 서버에서 명령을 받아 종료 코드를 출력하고 이를 문자열로 캡처합니다.
$ code=$( ssh server sh -c "somecommand; echo \$?" )
귀하의 경우:
$ code=$( ssh "$user@$slave_ip" sh -c "$dest_root/$dest_dir/slave_run; echo \$?" )
명령이 큰따옴표 안에 있고 클라이언트 측 셸이 아닌 서버 측 셸에서 평가되기를 원하기 때문에 $
of를 이스케이프해야 합니다 .$?
$?
답변2
종료 코드를 확인하려면 특수 변수 "$?"를 확인해야 합니다. 이 변수는 마지막 명령 실행의 종료 코드를 알려줍니다.
ssh $user@$slave_ip 'bash $dest_root/$dest_dir/slave_run ; echo $?'