你不喜欢 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 语句确保我们只统计用户的有效选择。这种检查可以用在该例的上一个版本中,不过当时我们想要示例保持简单化。
酷客网相关文章:
评论前必须登录!
注册