завихритесь команда, не выполняющаяся с помощью сценария оболочки в ударе

Я изучаю сценарии оболочки! Для того же я попытался загрузить данные генома 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 скрипт, загруженный файл пуст без любого сообщения об ошибке.

Но если выполнение команда непосредственно затем это хорошо работает.

Буду признателен, если кто-либо сообщил мне ошибку, я делаю в сценарии.

0
задан 26 June 2018 в 16:33

1 ответ

Вы, вероятно, не запускаете скрипт в ударе.

/bin/sh символьная ссылка на /bin/dash, неинтерактивная оболочка по умолчанию в Ubuntu (начиная с версии 6.10). dash не поддерживает команду ярлыка $(<filename), так Ваш token переменная пуста.

Для выполнения сценария с ударом измените строку хижины на #!/bin/bash или явно вызовите bash script.sh.

Обычно, если Вы хотите/нуждаетесь использовать определенную оболочку, необходимо явно указать его в строке хижины. Если Вы хотите, чтобы Ваш сценарий был портативным, можно указать #!/bin/sh, но затем необходимо удостовериться, что сценарий совместим POSIX. Например, совместимый POSIX эквивалент $(<filename) был бы $(cat filename).

4
ответ дан 29 October 2019 в 01:35

Другие вопросы по тегам:

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