簡體   English   中英

bash shell腳本復制第一個文件,對當前目錄具有一定的擴展名

[英]bash shell script copy first file with certain extension to current directory

我有一個目錄充滿了多個.c源文件,我試圖在另一個目錄中編寫一個shell腳本,該目錄將從前一個目錄復制第一個.c文件,編譯它,運行它並刪除它。 現在我了解了如何編譯,運行和刪除文件,但是如果在目錄中有多個具有相同擴展名的文件時,如何在不知道其名稱的情況下只獲取一個.c文件我感到困惑?

一種方法是使用循環,然后在第一次迭代后中斷:

for f in dir/*.c; do
    cp "$f" .
    # compile
    # run
    # delete
    break
done

您尚未指定如何定義“第一個”,但您可以使用set來實現此目的:

set -- source_dir/*.c
cp "$1" .
# ...
rm "$1"

假設您通過“first”表示排序列表中的第一個文件。

for循環工作正常,但你也可以這樣做:

file=`ls -1 dir/*.c | head -1`
# compile $file && run $file && delete $file

在bash中你可以使用數組:

files=(*.c)
echo "compiling ${files[0]}"
compile ${files[0]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM