Разделение параметра

Точка -f должен стараться избегать потребности к статистике каждая запись файла, и избегать потребности считать их всех, прежде чем любой будет отображен. Это - "meta" опция, которая просто отключает другие опции.

Так, да, это должно сделать то, что Вы ожидаете. Я не могу ответить, почему это не, но я предположил бы, что у Вас могли бы быть псевдоним оболочки или что-то еще, что вставляет дополнительные опции в команду. Это могло бы повторно включить функцию, чем -f отключает, и считаться "более конкретным", поэтому имейте приоритет.

2
14.11.2012, 01:02
2 ответа

Использовать "$@".

#!/bin/sh
trickle -u 80 ~/bin/s3cmd.py "$@"

Нет никакого функционального различия между $* и $@ при перенесении неявному разделению слова (почти всегда при закрытии кавычки). При заключении в кавычки, однако, $* единственная строка, разделенная первым символом IFS, и "$@" действительный массив (что Вы хотите).

$ set foo bar baz
$ IFS=c
$ printf '%s\n' "$@"
foo
bar
baz
$ printf '%s\n' "$*"
foocbarcbaz
6
27.01.2020, 21:50
  • 1
    Обратите внимание, что могут быть различия между $*, закрыл кавычки, и $ закрыл кавычки при некоторых обстоятельствах с некоторыми оболочками. Посмотрите, например, set a b; IFS=; a=$@; b=$*; echo "$a,$b" в ударе или AT&T ksh. Также обратите внимание, что в Оболочке Bourne (но кто заботится об Оболочке Bourne в наше время) SPC используется для разделения объектов в "$*", не первый символ $IFS. –  Stéphane Chazelas 13.11.2012, 23:09
  • 2
    @StephaneChazelas - Возможно, я должен был сказать "при перенесении неявному разделению слова", а не, "при закрытии кавычки". –  Chris Down 13.11.2012, 23:10

Вы захотите использовать $ вместо $* и заключить его в кавычки:

trickle -u 80 ~/bin/s3cmd.py "$@"

См. также Special Parameters раздел в странице справочника удара.

4
27.01.2020, 21:50

Теги

Похожие вопросы