在shell中,如何判断字符串以路径名开头?

时间:2013-08-22 05:55:25

标签: regex string shell

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

但它不起作用。那我怎么能正确地做到这一点?

3 个答案:

答案 0 :(得分:1)

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

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

逻辑:${path#/home/}会从/home/ 的开头剪切path(如果它在那里),或者如果path将按原样返回/home/ }不以{{1}}开头。

答案 1 :(得分:0)

这是一个例子。

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

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

答案 2 :(得分:0)

您已标记此问题regex,但您没有使用正则表达式,而是使用 globbing 。这很好,你的例子对我有用:

path='/home/user1/bin'

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

(虽然我更喜欢使用==而不是plain =)。你能告诉你代码(带有示例路径),以便我们检查吗?你确定你在使用bash吗?

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

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

^表示“从头开始”,不需要*