如何在短划线中测试文件名中的字符(或字符串)

时间:2015-01-08 10:21:48

标签: shell dash-shell

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

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,无论如何通常是破折号代码的情况)

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

2 个答案:

答案 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