[标签]: shell元祖 shell列表用法
问题详情的描述或方案目标的预期:搞清楚shell中元组、列表、字典、集合的用法以及区别。
描述:有时候,我们会用临时文本来过度数据,但如果运用元组或列表,可以无需用到文本来中转数据。
【解决方案】
1 表示方式:元组(),列表[],字典{},集合[()];
2 顺序性:列表、元组、字典是有顺序,集合是没顺序;
3 可变性:元组不可变的;列表可变;集合介于两者之间主要功能包括关系测试和消除重复元素;
4 访问方式:列表通过索访问;字典通过键来查找对应的值;在集合中,只能通过提供的元素来进行比较,来确定某个元素是否存在于集合中。
归纳:元组()不可变;列表[]字典{}可修改
用法示例:
OBLECT_LIST=`ls /`
tmp_tuple=($OBLECT_LIST)
echo "${tmp_tuple[*]}"
................................................
my_tuple=()
pos=0
# for i in $OBLECT_LIST;do
for i in ${tmp_tuple[*]};do
my_tuple[$pos]="$i"
# echo $pos
let pos++
done
echo "${my_tuple[*]}"
................................................
USERNAME="11 22 33 44 55"
user=( "${USERNAME}" )
for i in ${user[*]}
do echo $i
done
USERNAME="11 22 33 44 55"
for i in $USERNAME
do echo $i
done
for i in 11 22 33 44 55;do
echo $i
done
m=0;new_yz=()
for i in 11 22 33 44 55;do
echo $i
new_yz[$m]="${i}_taich"
echo "${new_yz[*]}"
echo
let m++
done
MYLIST="
111111111111
222222222222
333333333333
"
for i in $MYLIST;do
echo $i
done
MYLIST="
111111111111
222222222222
333333333333"
for i in $MYLIST;do
echo $i
done
/*双引号可另起一行,也可和内容同一行 都行*/
/*但是如果不用变量作中介,而是把内容直接写在for i in后面,则必须写在同一行,不能换行写,加引号会当作一个整体*/
#========================================================[SQL连接异常检测]
check_connect_sql_err_pods()
{
bl=0
err_pods=()
DES_PODS=`/usr/local/bin/kubectl --context $ENV get po -A|egrep -v "NAMESPACE |^arms-prom |^kube-system |NAME |^default |^kube-node-lease |^kube-public "|egrep " ([0-9]+[smh])+$" |awk '{print$1"_"$2}'|xargs echo`
des_pods=($DES_PODS)
for connect_sql_err_pods in $DES_PODS ;do
{
ENS=`echo $connect_sql_err_pods|cut -d_ -f1`
EPO=`echo $connect_sql_err_pods|cut -d_ -f2`
if [ `/usr/local/bin/kubectl --context $ENV -n $ENS logs $EPO |egrep -i "create connection SQLException"|wc -l` -gt 0 ];then
err_pods[$bl]="$EPO"
let bl++
fi
}&
toploop
done
if [ $bl -gt 0 ];then
clear;echo
myec -t "======================================================"
myec -t "检测到${ENV_DES}有如下Pods连接MySQL异常:"
# echo "${des_pods[@]}" |sed 's/ /\n/g' |nl |column -t
echo "${err_pods[*]}" |sed 's/ /\n/g' |nl |column -t
myec -t "======================================================"
echo;echo
fi
}
说说:很多东西或人或事,其多与少,并非和好与坏相关,世间之事,大多自己才是最关键的因素之一。