0

実行可能ファイルを実行する必要がある USB ドライブからシェル スクリプト ファイルを実行しようとしています。私はこの木を手に入れました:

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 ファイルシステムのルート位置 (「/」) の下にある名前の付いたフォルダーを検索します。つまり、ルート、ホーム、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 に答える