首页 > 其他分享 >专题(七)数组

专题(七)数组

时间:2024-08-09 11:55:16浏览次数:13  
标签:count 专题 IFS echo prefix 数组 array

一、用法

写法 说明
echo ${array[*]} 返回数组中的每个项,用空格隔开
echo ${array[@]} 返回数组中的每个项,用空格隔开
(字符串) 按照分隔符分割字符串,默认分隔符为 空格

1、array_name=(ele1  ele2  ele3 ... elen)

2、array_name=()

3、array_name=(1 2 3)

     array_name[3]=4

4、ages=([3]=24 [5]=19 [10]=12)

赋值号=两边不能有空格,必须紧挨着数组名和数组元素

1、第一种声明方式声明数组,其中定义了多个元素,元素之间用空格隔开;多个元素类型可以不相同,即ele1 可以是数字类型,ele2可以是字符串类型

2、第二种声明方式定义了空数组

3、第三种定义了数组之后,可以指定下标再定义一个元素,此时数组长度变为4了

4、第四种定义数组时,直接声明了元素,其中下标为3、5、10的元素都定义了值,此时数组的长度为3

${#array_name[@]} 获取数组长度
${#array_name[*]} 获取数组长度
${#arr[2]} 获取 arr 数组的第 2 个元素(假设它是字符串)的长度

unset array_name[1]

删除下标为1的元素

unset array_name

删除整个数据,所有元素清空

 

二、案例

1、字符串分割成数组

默认分割符是空格

(1) 将字符串先分割成数组(默认按照空格进行分割),再通过 for 循环打印数据中的每项

#默认空格将字符串分割成数组
test_string="a b c;e f g"
array=($test_string)
for item in ${array[*]};do
  echo $item
done

输出结果

#默认空格将字符串分割成数组
test_string="a b c;e f g"
array=($test_string)
echo "输出数组" ${array[@]}
for item in ${array[@]};do
  echo $item
done

 

 (2) 按照指定字符进行分割

old_IFS=$IFS
IFS=','
test_string="a,b,c,e,f,g"
array=($test_string)
echo "输出数组" ${array[@]}
for item in ${array[@]};do
  echo $item
done
IFS=$old_IFS

2、使用psql工具查询到数据库结果,并将返回的结果分割成数组(这里仅取数据库返回的结果放在数组中,与Java代码获取结果一致)按照换行符进行分割

     使用select count(*)查询指定表的记录总数,查找到的总数量放到数组中

  old_IFS=$IFS
  IFS=$'\n'     
  export PGPASSWORD=$target_db_super_pwd
   while(((_sync_cur_time-_sync_start_time)<sync_timeout)); do
     _array=(`$db_tool/psql -h $target_db_ip -p $db_port -U $db_super_user -d $db_name -c "select count(*) from public.xauth_user_default where username like '"${prefix}"_%'" 2>>$log_file`)  #返回的结果按照换行符分割到了数组中,其中包括表头
     if [ $? -ne 0 ];then
        echo  $(date +%F%n%T) "WARN[$prefix][batch_insert]: query data form $target_db_ip,cannot execute sql[select count(*) from public.xauth_user_default where username like '"${prefix}"_%']" >> $log_file
        sleep 3
        _sync_cur_time=`date +%s`
        _sync_rs=2
        continue
     fi
     echo $(date +%F%n%T) "INFO[$prefix][batch_insert]: success to query data form $target_db_ip: ${#_array[@]}">>$log_file
     _len=${#_array[@]}
     if [ $_len -gt 2 ];then  
        _last_row=${_array[_len-2]}   #拉取真实的第一条数据,去掉表头 以及  -------
        if [ -z $_last_row ];then
          echo $(date +%F%n%T) "ERROR[$prefix][batch_insert]: cannot get count of row [select count(*) from public.xauth_user_default where username like '"${prefix}"_%'].">>$log_file
          _sync_rs=2
          break;
        else
          _count=`echo $_last_row |sed s/[[:space:]]//g`
          if [ -z $_count ] || [ $_count -ne $batch_size ];then
            echo  $(date +%F%n%T) "WARN[$prefix][batch_insert]: query data form $target_db_ip,the size is not $batch_size,now is $_count,so continue to query. " >> $log_file
            usleep 50000  # 延迟50毫秒
            _sync_cur_time=`date +%s`
            continue;
          fi
          _sync_rs=0
          break;
        fi
     else 
       echo $(date +%F%n%T) "ERROR[$prefix][batch_insert]: size of response data from [select count(*) from public.xauth_user_default where username like '"${prefix}"_%'] is not correct.">>$log_file
       _sync_rs=2
       break;
     fi
  done
  IFS=$old_IFS

 

 

 

1、

在数组中查找特定的值

https://www.cnblogs.com/smallredness/p/13502872.html

http://c.biancheng.net/view/810.html

 

标签:count,专题,IFS,echo,prefix,数组,array
From: https://www.cnblogs.com/sandyflower/p/14035220.html

相关文章

  • 数组,字符串反转
    this.message='HelloVue.js!'this.message.split('').reverse().join('')执行后:分析:1.split('')把一个字符串分割成字符串数组如何理解?==》就是:例如字符串是“Hello”,使用split('')之后,就变成['H','e','l','......
  • 添加两个带有偏移量的 numpy 数组
    假设我有两个数组:a=numpy.array([1,2,3,4,5])b=numpy.array([10,11,12])我希望将这些数组添加在一起,但我希望从第一个数组中的索引3开始,以生成:numpy.array([1,2,3,14,16,12]).所以我基本上是在a[3中添加一个额外的0:]使其与b的长度相同,然后将其与b相......
  • 编写一个函数接受这些参数:内含int类型元素的数组名,数组的大小和一个代表选取次数的值
    /编写一个函数接受这些参数:内含int类型元素的数组名,数组的大小和一个代表选取次数的值。该函数从数组中随机指定数量的元素,并打印他们。每个元素只能选择一次(模拟抽奖数字或挑选陪审团成员)。另外,如果你的实现有time()或类似的函数,可以在srand()中使用这个函数的输出来初始化......
  • Python和AI库NumPy(二):数组创建与操作的深入探索
    目录1.数组创建1.1基本数组创建1.2使用内置函数创建数组1.3特殊数组的创建2.数组的基本操作2.1数组属性2.2数组索引和切片2.3数组的形状操作2.4数组拼接与分割3.数组的数学操作3.1基本算术操作3.2广播机制3.3线性代数运算4.高级数组操作4.1花式......
  • C语言数组练习
    数组作业一维数组练习题题目1键盘录入一组数列,利用冒泡排序将数据由大到小排序#include<stdio.h>intmain(){ intt[100],num,tmp; printf("请输入数字个数:"); scanf("%d",&num); printf("请输入%d个数字:\n",num); for(inti=0;i<num;i++){ sc......
  • C++ 根据层序遍历数组 构造二叉树
    说明该层序遍历数组中空节点会使用-1代替,即该层序遍历数组可以理解为一个完全二叉树代码利用队列实现左右子节点的存储,每次通过获取队列头部元素即为当前头节点,然后在数组中i和i+1对应该头结点下的左右子节点,如果不为-1,那么说明可以入队。structTreeNode{intval;Tree......
  • C数组和指针,从此不再困惑。
    目录一、思考下图中的问题?二、上图中问题答案,如下图:三、分析问题答案1、分析前知识准备1.0、内存区术语1.1、为什么定义数组类型变量时要指定大小或初始化1.2、指针指向的内存一定是在堆区吗?1.3、const关键字的思考1.4、进程虚拟地址空间1.5、为什么会段错误?2、开始......
  • 在python中将二维数组转换为彩色图像
    我有像这样的2d整数列表:list1=[[1,30,50],[21,45,9],[97,321,100]]下一步我要将其转换为numpy数组:myarr=np.asarray(list1)下一步我将使用PIL将其转换为图像,如下所示:img=Image.fromarray(myarr,"I")img.save("my.png")问题是我不想要灰......
  • 将二维数组与一维数组合并
    我目前np.append与两个数组组合,但它不能工作,它显示:ValueError:alltheinputarraydimensionsexceptfortheconcatenationaxismustmatchexactly,butalongdimension0,thearrayatindex0hassize64andthearrayatindex1hassize0这是我的......
  • 多维数组
    4.3多维数组目录4.3多维数组4.3.1二维数组一、二维数组定义方法二、二维数组的运行机制三、二维数组的使用四、多维数组之间的关系4.3.2同时定义多个数组4.3.3二维数组应用题4.3.4多维数组细节4.3.1二维数组数组不止能存储某具体值,还能用数组储存数组。介绍:我们前......