Я изучаю сценарии оболочки! Для того же я попытался загрузить данные генома TCGA с помощью завихрения на человечности (Ubuntu 16.04.3 LTS) терминал.
содержание sh.
#!/bin/sh
echo /0c8a6022-b770-4a83-bac3-b1526a16c89a/;
token=$(<gdc-user-token.2018-06-26T14_36_13.548Z.txt)
export ec=18; while [ $ec -ne 0 ]; do curl -C - -H "X-Auth-Token: $token" 'https://api.gdc.cancer.gov/slicing/view/0c8a6022-b770-4a83-bac3-b1526a16c89a?region=chr9:131270948-131270948' > STAD/chr9:131270948-131270948_C440.TCGA-BR-6453-01A-11D-1800-08.3_gdc_realn.bam; export ec=$?;done
Если я запускаю sh скрипт, загруженный файл пуст без любого сообщения об ошибке.
Но если выполнение команда непосредственно затем это хорошо работает.
Буду признателен, если кто-либо сообщил мне ошибку, я делаю в сценарии.
Вы, вероятно, не запускаете скрипт в ударе.
/bin/sh
символьная ссылка на /bin/dash
, неинтерактивная оболочка по умолчанию в Ubuntu (начиная с версии 6.10). dash
не поддерживает команду ярлыка $(<filename)
, так Ваш token
переменная пуста.
Для выполнения сценария с ударом измените строку хижины на #!/bin/bash
или явно вызовите bash script.sh
.
Обычно, если Вы хотите/нуждаетесь использовать определенную оболочку, необходимо явно указать его в строке хижины. Если Вы хотите, чтобы Ваш сценарий был портативным, можно указать #!/bin/sh
, но затем необходимо удостовериться, что сценарий совместим POSIX. Например, совместимый POSIX эквивалент $(<filename)
был бы $(cat filename)
.