我有一个字符串(实际上是一个文件名),我想测试它们是否包含一个字符:
NEEDLE="-"
for file in mydirectory/*
do
if [NEEDLE IS FOUND IN STRING]
then
# do something
else
# do something else
fi
done
基本上这是与String contains in Bash相同的问题,除了破折号而不是bash(理想情况下是shell-neutral,无论如何通常是破折号代码的情况)
[[操作符不存在于破折号中,因此该问题的答案不起作用。
答案 0 :(得分:2)
使用case
语句,无需生成外部程序:
NEEDLE="-"
for file in mydirectory/*; do
case "$file" in
*"$NEEDLE"*) echo "do something" ;;
*) echo "do something else" ;;
esac
done
答案 1 :(得分:0)
您可以在grep -q
内使用for loop
:
NEEDLE="-"
for file in mydirectory/*; do
if grep -q "$NEEDLE" "$file"; then
echo "do something"
else
echo "do something else"
fi
done