if .. else
명령문 에 삽입하기 위해 파일 이름의 일부를 읽으려고 합니다.
예를 들어:
파일 이름: foo_bar_test1_example.stat
테스트를 하고 싶습니다. 파일 이름에 단어가 있으면 example
실행할 스크립트가 있는 것입니다.
미리 감사드립니다 :)
답변1
case
Bourne 시리즈 쉘(Bourne, Almquist, ksh, bash, zsh, yash...)의 구성입니다.
case $file in
*example*) do-something-for-example "$file";;
*) do-something-else-if-not "$file";;
esac
시리즈 쉘 csh
(csh, tcsh):
switch ($file:q)
case *example*:
do-something-with $file:q
breaksw
default:
do-something-else-with $file:q
breaksw
endsw
fish
셸 에서 :
switch $file
case '*example*'
do-something-with $file
case '*'
do-something-else-with $file
end
또는 :rc
aganga
switch ($file) {
case *example*
do-something-with $file
case *
do-something-else-with $file
}
그리고 es
:
if {~ $file *example*} {
do-something-with $file
} {
do-something-else-with $file
}
답변2
bash
다음을 수행할 수 있습니다 .
#!/bin/bash
#let's look for an a in our handful of files
string="a"
for file in aa ab bb cc dd ad ; do
#note the placement of the asterisks and the quotes
#do not swap file and string!
if [[ "$file" == *"$string"* ]] ; then
echo "$string in $file"
else
echo "no match for $file"
fi
done
편집: bash
@JeffSchaller의 제안에 따라 정규식 일치를 사용하여 단순화합니다.
if [[ "$file" =~ $string ]] ; then