嘗試對目錄中以 .c 結尾的所有檔案(C 檔案)執行一些操作。代碼是:
#!/bin/sh
clear
for file in *
do
if [ $file="*.c" ]
then
echo $file
fi
done
exit 0
不起作用。它只是列出所有文件和目錄。
答案1
on 的條件if
格式錯誤,您只是檢查字串$file=*.c
是否不為空。嘗試改為:
#!/bin/sh
clear
for file in *
do
if [ "$file" = "*.c" ]
then
echo "$file"
fi
done
exit 0
另一方面,在這種情況下,編碼字元“*”不起作用,但它被解釋為字串。
嘗試:
#!/bin/sh
clear
for file in *.c
do
echo "$file"
done
exit 0
答案2
您的測試語句不會檢查檔案的後綴是否為.c
.它檢查(在大多數情況下)是否$file
等於*.c
,請參閱test(1)
。
但是,如果您將 for 語句替換為讀取
for file in *.c
for 語句只會傳遞以結尾的文件,.c
因此您不必再檢查。
答案3
另一種班輪方式是使用find
:
find . -name "*.c" | xargs echo
這取決於您實際想要對這些文件執行的操作,以便這對您有所幫助。