2013-10-21 257 views
0

我想从我的USB驱动器运行一个shell脚本文件,它必须运行一个可执行文件。我得到这个树: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的正确结束。

巴普蒂斯特

+0

您正在使用完整路径:'/ exe/Data /'等。你最好使用relative:'exe/Data /'等等。 – fedorqui

+0

><它似乎现在可以找到它!谢谢,我会尝试使用我的整个脚本。 – baptiste

+0

mkdir如果不存在或在继续查明问题之前尝试检查目录是否存在。也可以在运行脚本前尝试使用set -x来查看发生的情况 – SriniV

回答

1

/EXE /数据/将搜索下Linux文件系统(“/”),即其中相同的根,家庭,USR,tmp和MNT所有文件夹被放置的根位置命名的文件夹。并且脚本不会找到任何名称为“exe”的文件夹,它会报告你得到的错误。总而言之,如果在路径中/是前缀,它将转换为Linux文件系统的根目录。

“/ exe/Data”(绝对路径)和“./exe/Data”(相对路径)之间存在差异。我想以后需要根据您的要求。 AS:

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

应对/exe/TopHat.exe和其他位置进行相同的修改。

相关问题