2

我有一个使用 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 小,但可以满足我的需要。

4

0 回答 0