0

単純な for ループを実行しようとしていますが、do の近くに構文エラーがあると表示され続けます。私はオンラインでいくつかの答えを見つけようとしましたが、私の質問に完全に答えているものは何もないようです.

forループはそのままです。やりたいことは、2 つのフォルダーの違いを見つけることだけです。

#!/bin/bash
for word in $LIST; do
 diff DIR1/config $word/config
done
exit

構文エラーは do に近いです。「予期しないトークン「do」付近の構文エラー」と表示されます。$LIST は、このスクリプトを呼び出すプログラムによって、このスクリプトの外部で設定されます。

ここで何が起こっているのか知っている人はいますか?

4

1 に答える 1

3

これは確かに有効な構文なbashので、行末に CR/LF など、ファイルのどこかに特殊文字があるかどうかを確認します。

UNIXy システムを使用していると仮定すると、od -xcb scriptname.shこれが表示されるはずです。

さらに、変数を評価したいという理由$wordだけでなく、おそらく使用したいでしょう。word

確認すべきもう 1 つのことは、実際にこれをbash「下位の」シェルではなく実行していることです。set -xまた、実行前に行を出力するため、デバッグ目的でスクリプト内にa を配置すると便利なことがよくあります (set +xこの機能をオフにするために使用します)。

最後に確認することは、ループの前にLIST行うことで、実際に何かに設定されていることです。echo "[$LIST]"for

于 2013-06-07T15:00:23.083 に答える