Из ascii(7)
в Linux, читая через строки, для ^D
, используя ваше соответствие, мы находим:
004 4 04 EOT (end of transmission) 104 68 44 D
А затем для ^]
, используя то же самое соответствие:
035 29 1D GS (group separator) 135 93 5D ]
Это можно дополнительно подтвердить, переведя терминал в режим raw, и распечатав шестнадцатеричный код ключа mashed, затем просмотрев шестнадцатеричный код в ascii(7)
:
perl -MTerm::ReadKey -e 'warn "PID $$\n"; $SIG{TERM}=sub {ReadMode 0; exit};' \
-e 'ReadMode 4; while ($k=ReadKey(0)) { printf "%02x\n", ord $k }'
Не существует стандартной команды UNIX для простого возврата определенного значения. Основные утилиты GNU предоставляют только истина
и ложь
.
Однако вы можете легко реализовать это самостоятельно как ret
:
#include <stdlib.h>
int main(int argc, char *argv[]) {
return argc > 1 ? atoi(argv[1]) : 0;
}
Скомпилировать:
cc ret.c -o ret
И запустить:
./ret 56 ; echo $?
Печать:
56
Если вам нужно, чтобы это работало везде (где bash - доступно, то есть) без установки каких-либо дополнительных инструментов, вам, вероятно, придется прибегнуть к следующей команде, как @TimKennedy, предложенной в комментариях:
bash -c 'exit 56'
Обратите внимание, что допустимый диапазон возвращаемых значений - 0..255 включительно .