4

複数の .c ソース ファイルで満たされたディレクトリがあり、前のディレクトリから最初の .c ファイルをコピーし、コンパイルして実行し、削除するシェル スクリプトを別のディレクトリに書き込もうとしています。これで、ファイルをコンパイル、実行、および削除する方法を理解しましたが、ディレクトリに同じ拡張子を持つ複数のファイルがある場合に、その名前を知らずに.cファイルを1つだけ取得する方法について困惑していますか?

4

4 に答える 4

4

1 つの方法は、ループを使用して、最初の繰り返しの後にブレークアウトすることです。

for f in dir/*.c; do
    cp "$f" .
    # compile
    # run
    # delete
    break
done
于 2013-03-04T21:50:39.127 に答える
1

「最初の」をどのように定義するかを指定していませんが、これには次のように使用できますset

set -- source_dir/*.c
cp "$1" .
# ...
rm "$1"
于 2013-03-04T21:59:48.980 に答える
1

あなたが「最初」とは、ソートされたリストの最初のファイルを意味すると仮定します。

forループは正常に機能しますが、次のこともできます。

file=`ls -1 dir/*.c | head -1`
# compile $file && run $file && delete $file
于 2013-03-04T22:01:13.483 に答える
1

bash では、配列を使用できます。

files=(*.c)
echo "compiling ${files[0]}"
compile ${files[0]}
于 2013-03-05T00:02:10.733 に答える