我正在尝试从我的 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/