在pwd string

时间:2015-12-15 22:46:10

标签: bash

知道这个脚本有什么问题吗?我试图检查用户名是否是当前工作目录文件路径的一部分。我已经包含了同一件事的两个不同的实现,但它们都不起作用。

#!/bin/bash

USER_NAME=$(whoami)

if [[ "$USER_NAME" == *"$PWD"* ]]; then
  echo $PWD
else
  echo "not found"
fi

case "$USER_NAME" in 
  *$PWD*) echo $PWD ;;
esac

此外,这也不起作用:

grep "$USER_NAME" "$PWD"

然而,这有效:

echo "$PWD" | grep "$USER_NAME"

知道这里发生了什么吗?

编辑:这也不起作用:

if [[ *"$PWD"* == "$USER_NAME" ]]; then
  echo "found"
else
  echo "not found"
fi

甚至是这样:

if [[ $PWD == $USER_NAME ]]; then
  echo "found"
else
  echo "not found"
fi

或我迄今为止尝试的*或引号的任何其他组合。

EDIT2:

终于明白了,不得不用这个:

if [[ $PWD == *$USER_NAME* ]]; then
  echo "found"
else
  echo "not found"
fi

1 个答案:

答案 0 :(得分:1)

有两件事,您搜索的内容以及您搜索的内容。您在示例中将两者混合在一起。

if [[ "$USER_NAME" == *"$PWD"* ]]; then
           ^------swap----^

PWD内容命​​名的文件中的greps显然不会起作用,因为PWD是一个目录,而不是一个文件:

grep "$USER_NAME" "$PWD"