我在登录时展示了一个小小的横幅
fignow() { figlet -w $(tput cols) $(date +"%b %d, Week %V"); figlet -w $(tput cols) -f univers $(date +"%H:%M"); }如果安装了额外的字体以获取univers,但这不是默认安装的一部分,那么这很好,因此我可以执行以下操作:
fignow() { figlet -w $(tput cols) $(date +"%b %d, Week %V"); if [ -f /usr/share/figlet/univers.flf ]; then figlet -w $(tput cols) -f univers $(date +"%H:%M"); else figlet -w $(tput cols) $(date +"%H:%M"); fi; }这也很好,但我很好奇是否可以删除if/else/fi并在命令本身内执行逻辑,例如:
fignow() { figlet -w $(tput cols) $(date +"%b %d, Week %V"); figlet -w $(tput cols) -f $(use-univers-or-failback-to-standard.flf-if-univers.flf-is-not-available) $(date +"%H:%M"); }这样的事有可能吗?
发布于 2020-11-21 10:33:22
我建议使用figlist来避免硬编码主题路径:
figlet -w "$(tput cols)" -f "$((figlist | /bin/grep -hw universe) || echo "standard")" "foo"发布于 2020-11-21 09:36:16
我建议:
fignow() {
local opts
figlet -w $(tput cols) $(date +"%b %d, Week %V")
[ -f /usr/share/figlet/univers.flf ] && opts="-f univers"
figlet -w $(tput cols) $opts $(date +"%H:%M")
}只有当文件存在时,变量$opts才包含必要的选项。
发布于 2020-11-21 11:20:46
检查文件或解析图形列表或显示字体的输出本质上是脆弱的。只需打电话给派克,看看这个选项是否可用。类似于:
fignow() {
local font=${1-universe}
figlet -f "$font" a > /dev/null 2>&1 || font=
figlet -w $(tput cols) $(date +"%b %d, Week %V")
figlet -w $(tput cols) ${font:+-f "$font"} $(date +"%H:%M")
}请注意,在这种情况下,您不能在变量周围使用双引号,因为您希望${font:+-f "$font"}在$font为空时展开为空字符串。如果使用"${font:+-f "$font"}",则语义会发生变化,并将空字符串传递给figlet。
https://stackoverflow.com/questions/64941596
复制相似问题