Bash

如何在終端外傳播錯誤程式碼?

  • June 6, 2020

從 bash 腳本中,我嘗試檢索在新終端視窗中啟動的程序的錯誤程式碼。可以簡化為:

#!/bin/bash
urxvt -e bash -c "exit 4"
echo $?

輸出:0

我想訪問呼叫 urxvt 的腳本中的“4”。請問我該怎麼做?:)

AFAIK 圖形終端等uxvrt沒有任何實用程序可以為您提供您在其上執行的程序的返回碼。

我想到的最好和最直接的方法是在你的內部執行一個子shell bash(看起來有點混亂,但相信我)並在內部執行你想要的任何程序,bash並使用外部的來處理返回程式碼如下:

urxvt -e bash -c ' (exit 4) ; echo $? > error.code '

現在您可以從文件中讀取返回碼error.code

請注意,臨時文件的存在是必要的,因為如果您只是echo返回程式碼,它會列印在urxvt視窗中,該視窗本身會在幾千秒後關閉。所以您不會得到任何有用的東西。

引用自:https://unix.stackexchange.com/questions/591053