我正在尝试读取文件名的一部分以将其放入if .. else
语句中
例如 :
文件名 : foo_bar_test1_example.stat
我想做一个测试;如果文件名中存在单词 : example
,则有一些脚本要执行。
提前致谢 :)
答案1
case
是 Bourne 系列 shell(Bourne、Almquist、ksh、bash、zsh、yash...)中的构造:
case $file in
*example*) do-something-for-example "$file";;
*) do-something-else-if-not "$file";;
esac
在系列 shell 中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