Нет такого файла или каталога при выполнении файла оболочки в Google Colab - PullRequest
0 голосов
/ 04 октября 2019

Я выполняю код машинного перевода в google colab, для этого я клонировал код на свой диск и сохранил местоположение диска в переменной:

!PATH='/content/mydrive/My Drive/facebook/unsup'

Клонирование было успешно выполнено в нужном месте. Проблема возникает, когда я пытаюсь запустить файл оболочки:

!."$PATH/NMT/get_data_enfr.sh"

возвращает

/bin/bash: ./content/mydrive/My Drive/facebook/unsup/NMT/get_data_enfr.sh: No such file or directory

Но если я запускаю

!head "$PATH/NMT/get_data_enfr.sh"

Показывает содержимое файла.

# Copyright (c) 2018-present, Facebook, Inc.
# All rights reserved.
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.
#

set -e

#

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Можете ли вы попробовать запустить скрипт как:

sh "$PATH/NMT/get_data_enfr.sh"

Перед запуском, как указано выше, выполните следующую команду:

chmod +x "$PATH/NMT/get_data_enfr.sh"

Кажется, @ dash-o правильный,Когда вы запускаете сценарий, используя . перед сценарием, он фактически ищет сценарий из текущего каталога.

Это работает для команды head, потому что там полный путь передается в head, и он находит файл по этому пути, но не имеет значения true при его запуске.

./path/to/scriptна самом деле пытается запустить скрипт из текущего каталога и игнорирует абсолютный путь. Но при использовании sh, а затем $PATH, он фактически выполняется с абсолютного пути.

0 голосов
/ 04 октября 2019

Вы должны покинуть пространство с помощью одной обратной косой черты. Пример: PATH=/omg/a\ space Также неплохо бы поместить вывод в "или" с echo \"${PATH}\"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...