添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
热心的皮蛋  ·  Spring ...·  2 年前    · 
温文尔雅的韭菜  ·  javascript - How can ...·  2 年前    · 

在linux系统shell脚本中,有时候会用到判断字符串中是否有某些关键字段
有两种方法,第一种就是直接把这段字符串拆了,把想要的字符串提取出来,当然如果你需要写关键字段,那只能使用这种方法,但是如果我们只需要判断有没有,那可以使用第二种方法”grep” 方法。
如下代码想要搜索一串字符character中是否存在123这些字符,然后直接echo指令,利用管道符号,直接搜索123看有没有结果,-n string 如果 string 长度非零,则为真。

strA="123456"
strB="123"
result=$(echo $strA | grep "${strB}") 
if [ -n "$result" ]; then
    echo "yes"
    echo "no"

但是如果我们想查找这段字符串的开头是不是以123开始的(比如搜索电话号码以180开头的电话),再使用这种方法,会有问题。因为在字符串中也会有字符串123。如上脚本假设strA=”xxx123”也会被匹配到,所以这里可以使用 “^”符号,这个符号定义从数据流中文本行首开始的模式,如果模式出现在行首之外的位置,则正则表达式无法匹配。代码如下

strA="xxx123"
result=$(echo $strA | grep "^123") 
if [ -n "$result" ]; then
    echo "yes"
    echo "no"

同样如果需要锁定字符串在行尾,可以使用“$”符号。将这个特殊字符放在文本模式之后来指明数据航必须以该文本模式结尾代码如下

strA="123xxx"
result=$(echo $strA | grep "123$") 
if [ -n "$result" ]; then
    echo "yes"
    echo "no"

同样搜索特定字符在字符串中的不同位置,如在某个字符前后可以使用“ . ” 符号,代表一个字符,“*”同理,代表在文本中出现0次或者N次,“?”代表前面字符可以出现0次或者1次,不会匹配更多字符,当然还有更多的正则表达式的使用方式,如需要排除某些字符等,这里想强调写代码还是要严谨一点,脚本使用比较方便快捷,但是容易出现隐患,比如查找一个进程是否存在,最快的方式就是
result=ps | grep "xxxx",然后判断。或者count=ps | grep "xxxx 这种,但是我们搜索这段字符串的时候,有可能出现一种情况就是这段字符串会以别的形式存在与别的进程中,比如说以参数的形式,很多指令都有“–xxxx”这种,很容易造成错误,所以还是谨慎点把。

# 获取当前目录下以.py 或者.sh结的文件 l = [name for name in os.listdir('/shells/') if name.endswith(('.sh','py'))] print(l) # 获取文件的权限 for file in l: print(oct...
可以使用String 类的startsWith() 方法和endsWith() 方法,分别判断一个字符串是否以指定字符串为开头或结。 【范例5-16 】  判断是否以指定的字符串开头或结 public class  StringMethod02{   public static void main(String[] args) {   String str="StringMeth
小小蜗牛: 8M(cma预留内存) + 1M(ramops) + 4M(shared-dma-pool) + 11M(kernel) = 24M CMA内存虽然在kernel初始化时预留了,但是kernel初始化完成后还是要释放的,会还给buddy system,但还之前会添加MIGRATE_CMA标记,reserved-memory节点下有no-map标记的才会被排除在外,具体可以查看/sys/kernel/debug/memblock/memory文件 kernel在初始化时需要透过memblock动态申请内存,这部分动态申请的加上kernel代码和数据段,还有dtb的空间,差不多就是你这里的24MB了 动态申请的内存主要包括:struct page结构体,Dentry cache,Inode-cache,percpu数据,log buffer等,其中struct page结构体在你的log中是有体现的,这些数据可以查看/sys/kernel/debug/memblock/reserved文件,如果想更详细的调试,可以添加memblock=debug到cmdline中 [ 0.000000] DMA zone: 523 pages used for memmap