-1

我想这样写: if [[ ${path} = /home/* ]]

但它不起作用。那我该怎么做才能正确呢?</p>

4

3 回答 3

1

假设你正在使用bash,你可以写

if [ ${path#/home/} != ${path} ]; then
  echo "Yes, it's a home dir"
fi

逻辑:如果它存在则从开头${path#/home/}切掉,或者如果不以 开头,则按原样返回。 /home/path path/home/

于 2013-08-22T06:03:39.163 回答
0

你已经标记了这个问题regex,但你没有使用正则表达式,你正在使用globbing。这很好,你的例子对我有用:

path='/home/user1/bin'

if [[ ${path} = /home/* ]]
then
    echo "$path matched"
else
    echo "$path did not match"
fi

(虽然我更喜欢使用 == 而不是普通的 =)。您能否向您展示代码(带有示例路径)以便我们检查?你确定你使用的是 bash 吗?

如果要使用正则表达式,请使用匹配运算符=~,例如:

if [[ ${path} =~ ^/home/ ]]

意思是“^开始于”,不需要*.

于 2013-08-22T09:42:13.463 回答
0

这是一个例子。

● path='/home/xxx/Ubuntu One/www'; if [ -d "`dirname "$path"`" ]; then echo YES; fi
YES

而且你最好使用 $HOME 或 ${HOME} 来获取主目录路径。

于 2013-08-22T06:51:41.290 回答