Последний статус выхода из сценария без источника

Кроме того:

paste file1 file2 | awk '{h=NF/2;for (i=1;i<=h;i++) $i=$i*$(i+h);NF=h};1'

(предполагает, что и файлы имеют то же число столбцов и строк),

3
24.04.2015, 23:58
4 ответа

Я не совсем уверен, что это приведет к, но вы можете сделать:

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
1
27.01.2020, 21:16

Вы, возможно, могли бы использовать скрипт в 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 (), чтобы сделать ваши $? Проверка

2
27.01.2020, 21:16

Это звучит мне, как будто сценарии, которые вы звоните, должны предоставить ответы, которые вы хотите. Вот способ тестирования для команды и использовать определенный код выхода в эти скрипты.

#!/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
1
27.01.2020, 21:16

Написать функцию

Ваш shell - это один процесс, и у него есть значение для $?. Ваш скрипт - это отдельный, дочерний процесс, и имеет собственное значение для $?.

Если вы хотите иметь возможность проверить значение $?, принадлежащее вашему shell, вам нужно, чтобы ваша команда выполнялась в процессе shell. source - один из способов сделать это, но более простой способ - написать функцию.

function dummy(){
  echo $?
}

Если она объявлена в пользовательском .bashrc или эквиваленте, она должна быть доступна и работать так, как вы ожидаете.

(Если вы хотите, он может даже вызывать сценарий для выполнения любых других действий, и передавать ему значение $?.)

.
1
27.01.2020, 21:16

Теги

Похожие вопросы