Остановить жалобы рыбы :рыбы :$? не является статусом выхода. Для рыбы используйте $status

micha@linux-micha: /tmp
$ echo 'alpha bravo charlie' > blah.txt

micha@linux-micha: /tmp
$ cat blah.txt
alpha bravo charlie

micha@linux-micha: /tmp
$ sed -i 's/bravo/delta/' blah.txt

micha@linux-micha: /tmp
$ cat blah.txt
alpha delta charlie
0
22.06.2020, 00:19
2 ответа
$ bash -c 'false; echo "[$status]" "[`echo \$?h`]"'
[] [1h]
$ csh -c 'false; echo "[$status]" "[`echo \$?h`]"'
[1] [0]
$ fish -c 'false; echo "[$status]" "[`echo \$?h`]"'
[1] [`echo $?h`]

Использует тот факт, что `не является особым в fish, и что Bourne -подобно оболочкам выполняет дополнительный уровень обработки обратной косой черты внутри `...`.

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

if ($csh || $fish) {
   ENV{CHECK_STATUS} = q{perl -e '...' $status};
} else {
   ENV{CHECK_STATUS} = q{perl -e '...' "$?"};
}
exec $shell, "-c",...;

и код оболочки будетeval "$CHECK_STATUS"(имейте в виду, что для csh$CHECK_STATUSне должно содержать символов новой строки ).

3
18.03.2021, 23:25

Is there a compatible way I can tell fish: Please do not warn, I know what I am doing.

Нет. Перекрестная -совместимость скриптов между fish и другими оболочками не имеет значения , потому что fish несовместима .

В большинстве случаев вам нужно выбрать оболочку и написать для нее сценарий с шебангом и всем остальным, наиболее широко доступным вариантом является «/bin/sh».

Затем fish может просто запустить ваш скрипт так же, как скрипт, написанный на python или ruby, или программу, написанную на C.

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

export var=val

линии, а рыба получает его через/path/to/script | source(и другие раковины аналогичным образом ).

0
18.03.2021, 23:25

Теги

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