在Google Colab中执行外壳文件时没有此类文件或目录

时间:2019-10-04 07:42:39

标签: bash google-colaboratory

我正在google colab中运行机器翻译代码,因为我将代码克隆到驱动器中,并将驱动器位置存储在变量中:

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

成功在所需位置进行了克隆。 当我尝试运行shell文件时会出现问题:

!."$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 :(得分:0)

您必须使用单个反斜杠来转义空格。 示例:PATH=/omg/a\ spaceecho \"${PATH}\"

将输出放在“或”中也是一个好主意

答案 1 :(得分:0)

您可以尝试以以下方式运行脚本吗:

sh "$PATH/NMT/get_data_enfr.sh"

在像上面那样运行之前,请运行以下命令:

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

@ dash-o似乎是正确的,当您使用脚本前面的.运行脚本时,实际上是从当前目录中查找脚本。

它适用于head命令,因为那里有完整的路径传递给head,并且它正在该路径下找到文件,但在运行该文件时不是正确的。

./path/to/script实际上试图从当前目录运行脚本,而忽略绝对路径。但是当使用sh然后使用$PATH时,它实际上是从绝对路径运行的。