小编MrV*_*dji的帖子

检查 $REPLY 是否在一个数字范围内

我正在为 Linux 编写一个 shell 脚本,使用 Bash,将任何视频文件转换为 MP4。为此,我将avconvwithlibvorbis用于音频。

在我的脚本中,我有一个问题要问用户:

read -p "- Audio Quality [scale from -2 to 10] ? "
    if [ -n "$REPLY" ] ; then
    ABITRATE="-aq $REPLY"
    fi
Run Code Online (Sandbox Code Playgroud)

我的“ABITRATE”字符串进入最终的avconv命令行。

但我想让用户有机会用 Kb(千位)值来回答这个问题,并将其转换为libvorbis使用的比例。“从 -2 到 10 的比例”是这样的:

Quality Kbit/s  Normalization
-----------------------------
 -2      ~32        y
 -1      ~48        y
  0      ~64        y
  1      ~80        y
  2      ~96        y
  3     ~112        y
  4     ~128        n
  5     ~160        n
  6     ~192        n
  7     ~224        n
  8 …
Run Code Online (Sandbox Code Playgroud)

bash shell-script arithmetic

32
推荐指数
3
解决办法
8万
查看次数

检查变量是否仅包含我想要的内容,而没有其他内容

我正在编写一个脚本来从源代码构建软件,并且有一个--platforms选项。我想允许用户选择多个项目,但我不知道如何防止他们犯错。

例子:

read -p "For what platforms do you wish to build [mac/win/linux32/linux64/all] ? "

if [[ -n "`echo $REPLY | grep 'win\|mac\|linux32\|linux64\|all`" ]] ; then
    echo "ok"
else 
    echo "not ok"
fi
Run Code Online (Sandbox Code Playgroud)

如果用户回答linux32,应该没问题(而且确实如此)

如果用户回答linux32,mac,应该没问题(而且确实如此)

如果用户回答lulz,则不应该(事实并非如此)

如果用户回答linux32,lulz,则不应该(这是我的问题)

我想知道您是否知道一种方法可以让用户输入他们想要的任何内容,以逗号分隔,但前提是它是脚本提供的选项之一,所以在这种情况下linux32 linux64 mac win all.

也许case有一种方法可以允许多个输入,或者添加一个elif $REPLY contains anything else than what we want. 另一个想法,可以awk用吗?我无法弄清楚自己该怎么做。

grep bash

6
推荐指数
3
解决办法
1490
查看次数

Bash 脚本:脚本内的帮助文件还是不同的文件?

我正在编写一个脚本,它的使命是最终成为一个功能齐全的程序。据我所知,BASH 足以满足他的目的(管理 PPA,有点像 Y-PPA)。我想知道如何输出帮助myscript --help

目前,帮助echo -e直接在脚本内部编写并使用 a 调用if [ "$1" == "--help" ] || [ "$1" == "-h" ](我计划很快将其切换为 getopts)。

但什么更好?将该help部分留在脚本中还是只写一行来调用包含帮助的另一个文件?

在我看来,将它留在脚本中可能会更好,因为:

  • 我的程序将保持一个文本文件脚本
  • 它节省了硬盘驱动器上的空间
  • 它避免了显示另一个可能已损坏或位于不同位置的文件时出错

但是有一个包含帮助的不同文本文件也可能会更好,因为:

  • myscript命令调用的主脚本会更轻
  • 它简化了脚本的人工阅读
  • 如果需要,它允许单独更新帮助页面
  • 它甚至可以允许仅显示带有 GUI 的帮助页面,和/或打印它。

所以你看,我不知道这样做的“通常”方式是什么。谢谢 !

PS:还请注意,由于我计划发布一个完整的程序,因此手册页会很棒,所以无论如何我都必须提供 1 个以上的文件,也许只是一个 .deb

scripting bash shell-script

5
推荐指数
1
解决办法
9188
查看次数

标签 统计

bash ×3

shell-script ×2

arithmetic ×1

grep ×1

scripting ×1