Bash
.bashrc 中的 if 語句無法正常工作
.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
andfull_prompt
函式。
COLUMNS
變數由 bash 設置upon receipt of a SIGWINCH.
(請參閱Shell Variables
中的部分man bash
)。它沒有在您的腳本中設置,因為這不是環境變數。看看自己:$ export COLUMNS=$COLUMNS $ ./your-script.sh
現在它起作用了。您需要
COLUMNS
在腳本中檢索值。您可以使用tput
例如:$ tput cols 186
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