$ mkdir dosbox $ hsh-install dosbox hsh-install: Insufficient arguments. Try `hsh-install --help' for more information. Если каталога dosbox в текущем каталоге нету, то установка идёт нормально.
Да, это так, $ hsh --help |grep ^Usage: Usage: hsh [options] [<path-to-workdir>] <package>... Может, не очень удобно, но ничего не поделаешь.
(In reply to comment #1) > Да, это так, > $ hsh --help |grep ^Usage: > Usage: hsh [options] [<path-to-workdir>] <package>... > > Может, не очень удобно, но ничего не поделаешь. Насколько я понимаю hsh-install делается после создания workdir и устанавливается только один пакет. По идее это должно укладываться в usage и скрипт не должен проверять первый аргумент как директорию. В следующем if-e мы очевидно проходим по "else". if [ -z "$workdir" ]; then # At least two arguments. [ "$#" -ge 2 ] || show_usage 'Insufficient arguments.' else # At least one argument. [ "$#" -ge 1 ] || show_usage 'Insufficient arguments.' fi А вот тут интересно. workdir по умолчанию не пустая. Таким образом мы всегда проверяем первый аргумент. if [ -z "$workdir" -o -d "${1:-}" ]; then set_workdir "${1:-}" shift else set_workdir fi Дим, почему бы не добавить обработку очевидной ситуации, когда аргумент один ? Например, так: workdir_autodetect=1 if [ -z "$workdir" ]; then # At least two arguments. [ "$#" -ge 2 ] || show_usage 'Insufficient arguments.' else # At least one argument. [ "$#" -ge 1 ] || show_usage 'Insufficient arguments.' [ "$#" -gt 1 ] || workdir_autodetect= fi if [ -n "$workdir_autodetect" ] && [ -d "${1:-}" ]; then set_workdir "${1:-}" shift else set_workdir fi
(In reply to comment #2) > (In reply to comment #1) > > Да, это так, > > $ hsh --help |grep ^Usage: > > Usage: hsh [options] [<path-to-workdir>] <package>... > > > > Может, не очень удобно, но ничего не поделаешь. > > Насколько я понимаю hsh-install делается после создания workdir и > устанавливается только один пакет. По идее это должно укладываться в usage и > скрипт не должен проверять первый аргумент как директорию. Я не случайно вспомнил про hsh. Полагаешь, станет лучше, если у hsh и hsh-install будет разная семантика?
(In reply to comment #3) > (In reply to comment #2) > > (In reply to comment #1) > > > Да, это так, > > > $ hsh --help |grep ^Usage: > > > Usage: hsh [options] [<path-to-workdir>] <package>... > > > > > > Может, не очень удобно, но ничего не поделаешь. > > > > Насколько я понимаю hsh-install делается после создания workdir и > > устанавливается только один пакет. По идее это должно укладываться в usage и > > скрипт не должен проверять первый аргумент как директорию. > > Я не случайно вспомнил про hsh. > Полагаешь, станет лучше, если у hsh и hsh-install будет разная семантика? Или ты предлагаешь каким-нибудь образом распространиить это изменение на все остальные hsh-*?
(In reply to comment #3) > Я не случайно вспомнил про hsh. > Полагаешь, станет лучше, если у hsh и hsh-install будет разная семантика? Я не вижу в этом плохого. Это разные утилиты хоть и связанные. У них уже несколько разная семантика т.к. hsh требует, чтобы все аргументы присутствовали на файловой системе, а hsh-install нет. Мы просто уточняем поведение с единственным аргументом. (In reply to comment #4) > Или ты предлагаешь каким-нибудь образом распространиить это изменение на все > остальные hsh-*? Я думал об этом т.к. в hsh есть очень похожий код поиска workdir, но не стал предлагать т.к. у остальных утилит нет таких проблем поскольку у них workdir это один опциональный аргумент. Это разумно разве что в hsh-run.