0

我正在尝试从我的 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 目录我得到一个“没有这样的文件或目录”错误。经过几次尝试,我认为当我声明变量“data”和“rep_sortie”时我的问题就开始了。你知道我做错了什么吗?我不明白为什么它看不到这个目录。

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

巴蒂斯特

4

1 回答 1

1

/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 和其他位置也应进行相同的修改。

于 2013-10-21T12:12:53.853 回答