Bash Shell修改菜单提示符

你不喜欢 select 所生成菜单的提示符。该怎么修改?

解决方案

bash 环境变量 $PS3 就是 select 所使用的提示符。将其设置成别的值就可以得到一个新的提示符。

讨论

这是第三种 bash 提示符。第一种提示符($PS1)出现在大多数命令之前。(我们给出的例子用 $ 作为提示符,但它可以加入用户 ID 或目录名来变得更为复杂。)如果命令行需要续行,那么就得用到第二种提示符($PS2)了。

第三种提示符 $PS3 出现在 select 循环中。在执行 select 语句前设置该变量,就可以得到你想要的提示符。甚至还可以在循环内部对其做出改动。

下例中的脚本和创建简单的菜单中的类似,但是它会统计处理了多少次有效选择。

#!/usr/bin/env bash
# 实例文件:dbinit.2
#
DBLIST=$(sh ./listdb | tail -n +2)

PS3="0 inits >"

select DB in $DBLIST
do
    if [ $DB ]
    then
        echo Initializing database: $DB

        PS3="$((++i)) inits> "

        mysql -u user -p $DB <myinit.sql
    fi
done

我们额外加入了空行,这样做是为了让 $PS3 的设置部分更加显眼。if 语句确保我们只统计用户的有效选择。这种检查可以用在该例的上一个版本中,不过当时我们想要示例保持简单化。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!