Press "Enter" to skip to content

Linux Shell之数组

一,数组定义

定义方法1
arr=(1 2 3 4 5) #用空格分开

定义方法2
array
array[0]="a"
array[1]="b"
array[2]="c"

定义方法3
str=“a b c”
array=($str)

二,数组调用及遍历

${#array[@]}      #获取数组的长度
echo ${array[@]}  #遍历数组(输出数组全部元素)
array[0]=5        #向数组的某个元素赋值
echo ${array[@]:1:2}  #输出array[0]和array[1]的值
echo ${array[@]:2}    #输出数组第三个元素以后的值
echo ${array[@]::2}   #输出数组下标小于2的值
$ echo ${#array[3]}   #取得元素3的长度
unset array    #清除array
array=         #清空array的值


遍历(For循环法)
for i in ${arr[@]}
do
    echo $i
done

遍历(For循环法2)
for ((i=0;i<${#array[@]};i++))
do
   echo ${array[$i]}
done

遍历(while循环法)
len=${#arr[@]}
i=0
while [ $i -lt $len ]
do
echo ${arr[$i]}
let i++
done

每隔30秒,查找名为ndh2nds的进程,找出其pid,修改/proc/$pid/oom_score_adj的值,防止该进程被OOM机制杀掉

#!/bin/bash

while :
do
  list=`ps -ef | grep -i ndh2nds | grep -v 'grep ' | awk '{print $2}'`
  array=($list)
  for pid in ${array[@]}
  do
    score=`cat /proc/$pid/oom_score_adj`
    echo oom_score_adj of pid $pid is $score
    if [ $score -ge 0 ]; then
      echo -100 > /proc/$pid/oom_score_adj
      echo changed oom_score_adj of pid $pid to `cat /proc/$pid/oom_score_adj`
    fi
  done
sleep 30
done
Leave a Reply

Your email address will not be published. Required fields are marked *