linux - Shell 脚本错误 : No such file or directory

标签 linux shell unix

我正在尝试从我的 USB 驱动器运行一个 shell 脚本文件,它必须运行一个可执行文件。我得到了这棵树:

USBROOT/
    script.sh
    exe/
        myExe.exe
        Data/
            {Several Images}
        Results/
            {Results to be saved}

我的 .sh 文件看起来像这样(抱歉,代码中有一些法语 :p):

#!/bin/sh
data="/exe/Data/"
exe="/exe/TopHat.exe"
rep_sortie="/exe/Results/"
fichier_sortie="GPU_Vivante_iMx6_linux.txt"
#
echo "Temps d'exécution du TopHat en secondes" >> $fichier_sortie
echo "Erosion G, Erosion L, Dilatation G, Dilatation L, Reconstruction V, Reconstruction AV, DT" >> $fichier_sortie
#
list_image=`ls ${data}U1*.jpg`
#
for f in $list_image 
do
image=${f##*/} 
#echo $image >> $fichier_sortie
$exe $f ${rep_sortie}${image} >> $fichier_sortie
done
#
list_image=`ls ${data}U2*.jpg`
#
for f in $list_image
do
image=${f##*/} 
#echo $image >> $fichier_sortie
$exe $f ${rep_sortie}${image} >> $fichier_sortie
done

但是当我用命令行运行它的时候

sh script.sh

我从 USBROOT 目录收到“没有这样的文件或目录”错误。经过几次尝试,我认为当我声明变量“数据”和“rep_sortie”时我的问题就开始了。你知道我做错了什么吗?我不明白为什么它看不到这个目录。

我检查了行尾 LF 是否正确。

巴蒂斯特

最佳答案

/exe/Data/将搜索在 linux 文件系统的根位置(“/”)下命名的文件夹,即放置所有文件夹,如 root、home、usr、tmp 和 mnt。并且脚本不会找到名称为“exe”的任何文件夹,它会报告您遇到的错误。总是如果在路径中有/前缀,它会转换为 Linux 文件系统的根目录。

“/exe/Data”(绝对路径)和“./exe/Data”(相对路径)是有区别的。我想以后根据您的要求需要一个。 如:

./exe/Data 将转换为 ${PWD}/exe/Data,这肯定与/exe/Data 不同。 其中 $PWD 将作为当前工作目录的前缀。

/exe/TopHat.exe等位置也做同样的修改。

关于linux - Shell 脚本错误 : No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19493591/

相关文章:

c - 在 ret2ret 漏洞上执行 shellcode

Python stdout 重定向(特殊)

bash - 如何正确实时输出bash到文本文件?

unix - 在哪里可以找到 "halt"工具的源代码?

linux - linux/unix 中的 spawn、expect 和 send 命令是什么

c - 如何以原子方式解锁和销毁互斥体

linux - 如何计算字符串在仅使用 AWK 的文本文件中出现的次数?

linux - 使用 g 命令 sed

c - 服务器监听多个端口 c

shell - Makefile:将命令行参数传递给 Makefile 内的文件