for filename in *
do
if [ "$filename" -ne even ] && [ "$filename" -ne odd ]
then
echo "$filename"
fi
done
上記は、現在のリポジトリのファイルをチェックし、「even」と「odd」以外の名前のファイルを出力する単純なシェルスクリプトです。
動作しません
ベストアンサー1
比較演算子-ne
は山水演算子をテストします。つまり、整数のみを比較します。
i=7
if [ "$i" -ne 6 ] && [ "$i" -ne 8 ]; then
echo 'i is neither 6 nor 8'
fi
比較するひも不平等の場合は、以下を使用してください!=
。
if [ "$filename" != 'even' ] && [ "$filename" != 'odd' ]; then
printf '"%s" is neither of the strings "even" or "odd"\n' "$filename"
fi
または以下を使用してくださいcase
。
case "$filename" in
even|odd)
# the filename is "even" or "odd"
;;
*)
# the filename is neither "even" nor "odd"
printf '%s\n' "$filename"
esac
また、*
通常のファイル名だけでなく、現在のディレクトリのすべての名前とも一致します。ループ内の通常のファイルのみを処理するには、次を使用します。
for name in *; do
if [ ! -f "$name" ] || [ -L "$name" ]; then continue; fi
# other code here using "$name"
done
このcontinue
文はループの次の反復にジャンプします。-f file
調査する定期的な文書後ろにシンボリックリンクの確認で次の種類のファイルが必要な場合シンボリックリンク通常のファイルを指すかどうかに関係なく除外するには、追加します|| [ -L "$name" ]
。