
我設定.bashrc
為如果終端寬度至少為 80 個字符,則顯示長提示。否則,它會顯示降級的、較小的提示。
我使用一個if
聲明來實現這一點:
dp_smaller_than=80
if [ $COLUMNS -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi
只有當我在此語句之前放置一個或其他命令時,它才能正常工作sleep 0
,否則會顯示以下錯誤:
[: -lt: unary operator expected
筆記:我在文件開頭定義了degr_prompt
和函數。full_prompt
答案1
COLUMNS
變數由 bash 設定upon receipt of a SIGWINCH.
(參見Shell Variables
中的部分man bash
)。它未在您的腳本中設置,因為這不是環境變數。看看你自己:
$ export COLUMNS=$COLUMNS
$ ./your-script.sh
現在可以了。您需要檢索COLUMNS
腳本中的值。您可以使用tput
例如:
$ tput cols
186
答案2
COLUMNS
未以某種方式設定在.bashrc
.
只需透過以下方式取得列tput cols
:
dp_smaller_than=80
if [ $(tput cols) -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi