我正在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
#
答案 0 :(得分:0)
您必须使用单个反斜杠来转义空格。
示例:PATH=/omg/a\ space
用echo \"${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
时,它实际上是从绝对路径运行的。