我有一个使用 docopts 的 bash 脚本。它在我的 Debian 机器上运行良好,但无法在我的 Ubuntu 笔记本电脑上设置默认值。这是文档代码:
eval "$(docopts -A args -V - -h - : "$@" <<EOF
Usage: cmus_select.sh [--list <tag>] [--random] [--structure=</alt/dir/structure>] [--dir=/path/to/music]
-h --help Show help
-r --random Randomize selection instead of using a dmenu
-l --list TAG List music by tag. Unless you use -s, genre, artist, album, and song are expected. [default: song]
-s --structure STRUCT Directory structure for your music. [default: genre/artist/album/song]
-d --dir DIR Location of music [default: $HOME/Music/]
----
cmus_select.sh 0.0.1
EOF
)"
- 我找到了两个空格的要求并且已经检查过了(不确定stackoverflow格式是否会吃掉空格。)
- 两台机器都使用docopts 0.6.1+fix。debian 机器使用 bash 4.2.37 和 python 2.7.3。ubuntu 机器在 4.2.45 和 2.7.5+ 上。
- 我尝试了多种方式来描述这些选项。-l/--list 的不同顺序。= 选项及其变量之间的符号。尖括号中的变量名称。等等。它在 debian 中可靠地工作,而不是在 Ubuntu 中。
- 跟进 -
我在 debian 测试机上遇到了同样的问题。Docopts 正在寻找新的维护者,所以我放弃了。作为替代方案,我写了https://raw.github.com/sagotsky/.dotfiles/612fe9e5c4aa7e1fae268810b24f8f80960a6d66/scripts/argh.sh,它比 docopts 小,但可以满足我的需要。