1

我有一个字符串(实际上是一个文件名),我想测试它们是否包含一个字符:

NEEDLE="-"
for file in mydirectory/*
do
   if [NEEDLE IS FOUND IN STRING]
   then
       # do something
   else
       # do something else
   fi
done

基本上,这与String 中包含的问题相同Bash ,除了 dash 而不是 bash (理想情况下是外壳中性,无论如何通常都是 dash-code 的情况)

破折号中不存在 [[ 运算符,因此该问题的答案不起作用。

4

2 回答 2

2

使用case语句,无需生成外部程序:

NEEDLE="-"
for file in mydirectory/*; do
    case "$file" in
        *"$NEEDLE"*) echo "do something" ;;
        *) echo "do something else" ;;
    esac
done
于 2015-01-08T11:40:23.173 回答
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
于 2015-01-08T10:26:16.567 回答