小编so.*_*red的帖子

shell:=~ 运算符不能按预期工作

考虑以下脚本:

#! /bin/bash

line="confusing"

if [[ $line =~ [[:lower:]]* ]]
then
    echo "matches!"
else
    echo "does not match."
fi
Run Code Online (Sandbox Code Playgroud)

虽然以上产生了预期的结果,但以下不会:

#! /bin/bash

line="CoNfUsInG"

if [[ $line =~ [[:lower:]]* ]]
then
    echo "matches!"
else
    echo "does not match."
fi
Run Code Online (Sandbox Code Playgroud)

这会打印“匹配!”
我很迷惑; 正则表达式不是[[:lower:]]*表示零个或多个小写字母吗?

当以下内容也打印“matches!”时,它会变得更加混乱。

#! /bin/bash

line="CoNfUsInG"

if [[ $line =~ [[:digit:]]* ]]
then
    echo "matches!"
else
    echo "does not match."
fi
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么会发生这种情况?

bash regular-expression test

2
推荐指数
1
解决办法
1224
查看次数

rm 拒绝删除文件夹!(与 -R 选项无关)

我在我的个人笔记本电脑和我的系统上使用 Ubuntu,每当我使用rm文件时,它就消失了。好的。
问题出在我的大学服务器上。
我正在尝试从我的主目录中删除一个文件夹:environment/tests。令我大吃一惊的是,当我使用 rm environment/tests(出于某种奇怪的原因,rm 不需要 -R 选项来删除大学服务器上的文件夹...)时,这就是我得到的:

u2 **** 114 : rm environment/tests
/bin/mv: cannot move `environment/tests/' to `/u/stud/****/../TrashCan/****/tests': File exists
u2 **** 115 :
Run Code Online (Sandbox Code Playgroud)

(**** 代替我的用户名)

所以我试图将它从垃圾桶中删除,但意识到这是一个递归调用...... :)

u2 **** 157 : rm ~/../TrashCan/****/tests
/bin/mv: `/u/stud/****/../TrashCan/****/tests' and `/u/stud/****/../TrashCan/****/tests' are the same file
u2 **** 158 :
Run Code Online (Sandbox Code Playgroud)

首先,mv在这里有什么作用?(注意这是一个 /bin/mv 错误)
其次,我怎样才能一劳永逸地删除这个文件夹?
事实上,当我在做的时候,我想完全清空垃圾桶。但是,这个:

u2 **** 169 : rm * ~/../TrashCan/
Run Code Online (Sandbox Code Playgroud)

不起作用。
服务器运行以下版本:

u2 **** 170 : uname -a
Linux u2 2.6.32-504.8.1.el6.x86_64 #1 SMP Wed Jan 28 21:11:36 …
Run Code Online (Sandbox Code Playgroud)

rm

0
推荐指数
1
解决办法
4784
查看次数

标签 统计

bash ×1

regular-expression ×1

rm ×1

test ×1