Кроме того:
paste file1 file2 | awk '{h=NF/2;for (i=1;i<=h;i++) $i=$i*$(i+h);NF=h};1'
(предполагает, что и файлы имеют то же число столбцов и строк),
Я не совсем уверен, что это приведет к, но вы можете сделать:
alias dummy='sh dummy $?'
the_program_with_errors
dummy
и ваш скрипт
будет содержать:
echo $1
Подход без псевдоним
- использовать функцию оболочки:
function dummy { sh dummy $? ;}
с этим определением вы можете получить следующее поведение (имитируется с true
, false
, и подпункл Процесс):
$ true
$ dummy
0
$ false
$ dummy
1
$ (exit 42)
$ dummy
42
Вы, возможно, могли бы использовать скрипт в https://github.com/rcaloras/bash-preexec (как обсуждалось в https://superuser.com/questions/175799/does- Bash-a-a-a-to-to-to-is-run-for-executing-a-command ) и используйте функцию Precmd (), чтобы сделать ваши $? Проверка
Это звучит мне, как будто сценарии, которые вы звоните, должны предоставить ответы, которые вы хотите. Вот способ тестирования для команды и использовать определенный код выхода в эти скрипты.
#!/bin/bash
# Test for the existence of a command in the path.
command=typo_command
if [[ ! $(command -v $command) ]]; then
echo "$command does not exist"
exit 127 # or the code you choose
fi
Ваш shell - это один процесс, и у него есть значение для $?
. Ваш скрипт - это отдельный, дочерний процесс, и имеет собственное значение для $?
.
Если вы хотите иметь возможность проверить значение $?
, принадлежащее вашему shell, вам нужно, чтобы ваша команда выполнялась в процессе shell. source
- один из способов сделать это, но более простой способ - написать функцию.
function dummy(){
echo $?
}
Если она объявлена в пользовательском .bashrc
или эквиваленте, она должна быть доступна и работать так, как вы ожидаете.
(Если вы хотите, он может даже вызывать сценарий для выполнения любых других действий, и передавать ему значение $?
.)