我正在为 Linux 编写一个 shell 脚本,使用 Bash,将任何视频文件转换为 MP4。为此,我将avconv
withlibvorbis
用于音频。
在我的脚本中,我有一个问题要问用户:
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) 我正在编写一个脚本来从源代码构建软件,并且有一个--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
用吗?我无法弄清楚自己该怎么做。
我正在编写一个脚本,它的使命是最终成为一个功能齐全的程序。据我所知,BASH 足以满足他的目的(管理 PPA,有点像 Y-PPA)。我想知道如何输出帮助myscript --help
。
目前,帮助echo -e
直接在脚本内部编写并使用 a 调用if [ "$1" == "--help" ] || [ "$1" == "-h" ]
(我计划很快将其切换为 getopts)。
但什么更好?将该help
部分留在脚本中还是只写一行来调用包含帮助的另一个文件?
在我看来,将它留在脚本中可能会更好,因为:
但是有一个包含帮助的不同文本文件也可能会更好,因为:
myscript
命令调用的主脚本会更轻所以你看,我不知道这样做的“通常”方式是什么。谢谢 !
PS:还请注意,由于我计划发布一个完整的程序,因此手册页会很棒,所以无论如何我都必须提供 1 个以上的文件,也许只是一个 .deb