A macdef
, как и другие ( логин
, пароль
и т. Д.), применяется только к строфе с машинным -головым , в которой он находится. Насколько мне известно, размещение директивы
macdef
перед первой строфой machine
не имеет никакого эффекта , и нет никакого способа получить макрос до выполнения команды open
.
Ваш макрос будет работать, если вы сначала откроете соединение с сайтом:
$ ftp ftp.nyxdata.com
ftp> $download_nyse_index
Чтобы создать сценарий полного сеанса FTP, передайте ввод команде ftp
.
ftp ftp.nyxdata.com <<EOF
cd /OpenBook/SymbolMapping
bin
get SymbolMap.xml /tmp/SymbolMap.xml
quit
EOF
Если вы делаете что-то настолько простое, используйте wget или curl. Если вы не хотите, чтобы пароль был в командной строке, вы можете ввести ~ / .netrc
; wget читает его по умолчанию, а curl читает его, если вы передаете параметр -n
.
wget -O /tmp/SymbolMap.xml ftp://ftp.nyxdata.com/OpenBook/SymbolMapping/SymbolMap.xml
Поскольку wget
принимает несколько URL-адресов одновременно, это можно сделать с помощью раскрытия скобок вbash
:
wget -P ~/ https://raw.githubusercontent.com/user/repo/branch/{papj.sh,nixta.sh}
(или даже
wget -P ~/ https://raw.githubusercontent.com/user/repo/branch/{papj,nixta}.sh
но это работает только для хорошо -подходящих имен, конечно ).