シェルプログラミングとcppファイルを使ってデバッグしますか?

シェルプログラミングとcppファイルを使ってデバッグしますか?

私のコードがどのように機能するのか理解できません。私はこのプロジェクトに初めてアクセスし、以前はUnixを学んだことがありません。私の同僚は私にプログラムの実行方法をすばやく示しましたが、その仕組みについては説明しませんでした。

makeを実行してすべてのC ++ファイルが正しくコンパイルされたことを確認した後、彼はコマンドプロンプトに行き、次のように入力しました。./run.sh list.txt

run.shファイルを見ました。次のように:

DIR=/directory/scripts/binaries/what

LIST=$1

while read PDF
do 
    echo "HOLD ON ${PDF}..." 
    ./makeInputAX.sh ${PDF} ${PDF} >INPUT/${PDF}.something 
    ${DIR} -AX INPUT/${PDF}.something # I don't want to reveal the actual types of files I'm dealing with, so I called them 'something'
done < ${LIST}

ファイルmakeInputAX.shは次のとおりです

$PDF=1
echo "THEFILE ABC/{PDF}.something"

以下list.txtを含みます。

12345

だから私はすでにrun.sh内部コンテンツを読み、変数にlist.txt割り当てる方法を知っています。コマンドプロンプトで見ました。私を混乱させることは、最初に実行してから呼び出すと思いましたが、割り当てがない場合はどのように割り当てますか?12345LISTHOLD ON 12345run.shmakeInputAX.shPDFlist.txtmakeInputAX.shrun.sh

また、私を混乱させることは、コマンドプロンプトでプロジェクトの一部であるcppファイルに書かれたプログラムの出力を見ることができるということです。ただし、ファイルは代わりに別のディレクトリにあります/directory/scripts/binaries/what。これらのcppファイルを変更して新しい出力を確認したかったのですが、エラーが発生しました。

 could not open the somethingelse file for read

しかし、could not open the ..私のC ++コードには書かれていません。この問題を解決するには、私のcppファイルを調べる必要がありますか、それともこのshファイルが役に立ちますか?

ベストアンサー1

$1スクリプトの最初のパラメータです。list.txt

LIST=$1

そのファイル名をLIST変数にコピーすると、$LIST変数lists.txtも含まれます。そうではありません12345

while read PDF
do
    ...
done < ${LIST}

ファイルにリダイレクトされた標準入力を使用してループを開始しlist.txt、ループを通過するたびにファイルから変数に1行を読み込みますPDF。したがって、$PDF`12345が含まれます。

の変数はのmakeInputAX.sh変数とは何の関係もありませんrun.sh。したがって、それらはそれぞれという名前の独自の変数を持ち、PDF独立して機能します。唯一の例外は、exportコマンドを使用して宣言される環境変数です。呼び出しスクリプトに設定されている環境変数は、呼び出すスクリプトの環境にコピーされます(その逆ではありません)。

スクリプトで「読み取るために他のファイルを開けません」という内容は表示されません。これはC ++プログラムからのものであるに違いありません。おそらく、プログラムが呼び出すライブラリにあるので、コードのどこにでもメッセージを見ることはできません。

しかし、makeInputAX.shスクリプトが正しくないようです。おそらく次のようになります。

PDF=1
echo "THEFILE ABC/${PDF}.something"

$他のコマンドに変数値を挿入するときは、代入に使用しないで変数の前に置いてください。それを逆さまに持ってきて、$課題には使いましたが、echoコマンドには使用しませんでした。

おすすめ記事