Fish
停止魚抱怨:魚:?我不知道。________我nf我sh,請隨便?一世sn這噸噸H和和X一世噸s噸一種噸在s.一世nF一世sH,pl和一種s和在s和? is not the exit status. In fis…
我正在建構一個應該在 , , 中工作的腳本
csh
,bash
並且fish
沒有任何變化:這在所有貝殼中都是正確的,
perl -e '$bash=shift;$csh=shift;for(@ARGV){unlink;rmdir;}if($bash=~s/h//){exit$bash;}exit$csh;' "$?h" "$status" $PARALLEL_TMP
除了
fish
抱怨:fish: $? is not the exit status. In fish, please use $status.
有沒有一種兼容的方式可以告訴魚:請不要警告,我知道我在做什麼。
$ 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
所有三個 shell 都支持的 ,並在某個環境變數中為所有三個 shell 準備好不同的程式碼,這將簡化事情。if ($csh || $fish) { ENV{CHECK_STATUS} = q{perl -e '...' $status}; } else { ENV{CHECK_STATUS} = q{perl -e '...' "$?"}; } exec $shell, "-c", ...;
並且外殼程式碼將是
eval "$CHECK_STATUS"
(注意 forcsh
,$CHECK_STATUS
不能包含換行符)。