Как передать скобки в аргументы некоторых программ?

Это помогает:

for f1 in *; do echo -n "$f1"" "\"; cat "$f1"; echo "\""; done

Он перебирает все файлы в каталоге, затем для каждого файла показывает его имя, за которым следует его содержимое в кавычках.

-1
29.09.2020, 10:30
1 ответ

[, (и SPC являются специальными символами в синтаксисе оболочки bash. Посмотрите, как SPC между pythonи train.py, например, использовался для разграничения двух аргументов для перехода к /path/to/python. [/ ]являются специальными операторами глобуса, (, )являются частью многих конструкций, таких как func ()..., <(...), (subshell), ((arith))и т. д.

Чтобы удалить их особое значение, вы используете кавычки/экранирование. Операторы кавычек различаются между оболочками. См. Как использовать специальный символ как обычный? для получения подробной информации.

В оболочке bashвы можете использовать '...', "...", $'...'и обратную косую черту. Здесь лучше всего с:

python train.py --conv-layers '[(512, 10, 5), (512, 8, 4)]'

Если вы хотите, чтобы [(512, 10, 5), (512, 8, 4)]передавалось как один аргумент в/path/to/python(помимо python, train.pyи--conv-layers).

4
18.03.2021, 23:01

Теги

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