日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

whiptail 簡介

用了一下 whiptail 工具實現在 shell 腳本以圖形界面方式進行交互,據其 使用文檔 上的說明,這個工具好古老啊,竟然是 1998 年開發出來的。

Shell 腳本中 3>&1 1>&2 2>&3 的含義

whiptail 簡介


其基本語法為:

 whiptail  [  --title  title  ]  [ --backtitle backtitle ] [ --clear ] [
       --defaultno ] [ --fb ] [ --nocancel ] [ --noitem ] [  --separate-output
       ] [ --scrolltext ] box-options

有三種返回狀態:

  • 0:用戶選擇 OK 按鈕
  • 1:用戶選擇 Cancel 按鈕
  • -1:內部異常或者 ESC 退出(測試 ESC 按鍵沒有反應

據該命令的返回狀態進行腳本控制,因為以前寫自動部署腳本時用 input 接收用戶輸入的,實際上其實是需要用戶在固定的幾個選項中選擇的。 whiptail 的菜單正好可以實現接收用戶選擇的功能,所以練習了下菜單。

菜單選項

參考這篇 《交互式shell腳本對話框》 中的 menu 部分的代碼,菜單使用語法為:

whiptail --title "<menu title>" --menu "<text to show>" <height> <width> <menu height> [ <tag> <item> ] . . .

編寫一個收集用戶選項的測試腳本:

#!/bin/bash
OPTION=$(whiptail --title "Menu Dialog" --menu "Choose your favorite programming language." 15 60 4  "1" "Python"  "2" "JAVA"  "3" "C"  "4" "php"  3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus = 0 ]; then
    echo "Your favorite programming language is:" $OPTION
else
    echo "You chose Cancel."
fi

執行腳本:

Shell 腳本中 3>&1 1>&2 2>&3 的含義

自定義菜單

3>&1 1>&2 2>&3 含義

上面這個測試腳本中, 3>&1 1>&2 2>&3 是什么意思呢?
反復試了一下,去掉這一整個語句,或者去掉某幾個,腳本執行都會處于懸停狀態,只有加上完整的這個語句,才能正確執行。那么它的含義是什么呢?

找到 這個鏈接 問的正好就是這個問題,這里翻譯整理一下:

1、linux 的標準輸入輸出流只有三種,即 0-stdin 、1-stdout、2-stderr
2、&標準流 是一個指向標準流的指針,如果沒有 & ,就是創建的一個普通的文件句柄。
3、>&標準流 指將某個文件重定向到另一個流
4、這里的 3>&1 ,的含義是:先創建一個文件句柄 3,將其重定向到1(out),再將 1 重定向 2 ,最后再將 2 重定向到 3 。這么繞了一圈就是初學編程時交換兩個變量的過程,將 error 的內容重定向到 out 了,out 重定向到 error 。

這三個命令的作用類似這個簡單的 swap 函數:

int swap(int a,int b){
   int temp = a;//臨時容器裝 a,空出 a 容器
   a=b;//將 b 放入 a 容器,空出 b 容器
   b=temp;//再將臨時容器中的內容放入 b 容器
}

這里為什么要交換 out 和 err 呢?

可能是這個 menu 命令不關注本身的 out 信息,但是卻關注其 err 信息,它的正常選項會返回給 OPTION ,然后根據命令的退出狀態處理腳本的邏輯。

分享到:
標簽:Shell
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定