我有一个目录,里面装满了多个.c源文件,我正在尝试在另一个目录中编写一个shell脚本,该目录将从前一个目录中复制第一个.c文件,编译它,运行它并删除它。现在我了解了如何编译,运行和删除文件,但是如果在目录中有多个具有相同扩展名的文件时,如何在不知道其名称的情况下只获取一个.c文件而感到难过?
答案 0 :(得分:4)
一种方法是使用循环,然后在第一次迭代后中断:
for f in dir/*.c; do
cp "$f" .
# compile
# run
# delete
break
done
答案 1 :(得分:1)
您尚未指定如何定义“第一个”,但您可以使用set
:
set -- source_dir/*.c
cp "$1" .
# ...
rm "$1"
答案 2 :(得分:1)
假设您通过“first”表示排序列表中的第一个文件。
for循环工作正常,但您也可以这样做:
file=`ls -1 dir/*.c | head -1`
# compile $file && run $file && delete $file
答案 3 :(得分:1)
在bash中你可以使用数组:
files=(*.c)
echo "compiling ${files[0]}"
compile ${files[0]}