bash:条件の問題の場合

bash:条件の問題の場合

ディレクトリで.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

このファイルで実際にやりたいことに依存するので、これは役に立ちます。

関連情報