[英]Calling man with redirected stdin to show help from within a BASH script
有沒有用,為什么任何理由man
與重定向標准輸入從bash腳本中顯示的幫助是一個壞主意或不使用bash的所有(合理范圍內)的版本兼容?
這個技術適用於我可以輕松訪問的兩個版本的BASH:GNU BASH v.4.3.11和4.3.30(都在Linux上)。 在我看來,在腳本中顯示腳本幫助是一種優雅的方式,當下載它的人不太可能打擾安裝手冊頁時,手冊頁已經寫好了。
下面是我的意思的一個簡單的例子。 當在命令行上使用help選項時,將調用display_usage_message
函數,並且當函數返回時腳本將調用exit
。
#!/bin/bash
display_usage_message()
{
man /dev/stdin <<EOF
.TH SCRIPT 1 "01 Oct 2015" "1.0" "SCRIPT VERSION 1.0"
.SH NAME
Script \- whatever it does.
.SH SYNOPSIS
script options etc.
.SH DESCRIPTION
This is a description which is not very long. :)
EOF
}
display_usage_message
exit
謝謝。
編輯:根據chepner的評論,這種輕微的變化是否可靠?
#!/bin/bash
display_usage_message()
{
temp_man_filename=$(mktemp -q -t "tmp.man.page.XXXXXX")
cat <<EOF >>$temp_man_filename
.TH SCRIPT 1 "01 Oct 2015" "1.0" "SCRIPT VERSION 1.0"
.SH NAME
Script \- whatever it does.
.SH SYNOPSIS
script options etc.
.SH DESCRIPTION
This is a description which is not very long. :)
EOF
man $temp_man_filename
rm $temp_man_filename
}
display_usage_message
exit
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.