我想这样写:
if [[ ${path} = /home/* ]]
但它不起作用。那我该怎么做才能正确呢?</p>
假设你正在使用bash
,你可以写
if [ ${path#/home/} != ${path} ]; then
echo "Yes, it's a home dir"
fi
逻辑:如果它存在则从开头${path#/home/}
切掉,或者如果不以 开头,则按原样返回。 /home/
path
path
/home/
你已经标记了这个问题regex
,但你没有使用正则表达式,你正在使用globbing。这很好,你的例子对我有用:
path='/home/user1/bin'
if [[ ${path} = /home/* ]]
then
echo "$path matched"
else
echo "$path did not match"
fi
(虽然我更喜欢使用 == 而不是普通的 =)。您能否向您展示代码(带有示例路径)以便我们检查?你确定你使用的是 bash 吗?
如果要使用正则表达式,请使用匹配运算符=~
,例如:
if [[ ${path} =~ ^/home/ ]]
意思是“^
开始于”,不需要*
.
这是一个例子。
● path='/home/xxx/Ubuntu One/www'; if [ -d "`dirname "$path"`" ]; then echo YES; fi
YES
而且你最好使用 $HOME 或 ${HOME} 来获取主目录路径。