shell脚本(七)

shell脚本(七)


j、数组


#关联数组:,一般的数组索引必需是数值,而关联数组索引可以是字符串

#也可以是数值,与python的字典类似

awk ‘BEGIN {str[name]="string";str[1]="1"};printf("%s\n%s\n",str[name],str[1])}技术分享

#split函数,注意for(i in name)输出是随机的

awk -F: ‘{split($0,name,":");for(i in name) print i,":",name[i]}‘ num.txt

awk -F: ‘{split($0,name,":");for(i=1;i<=NF;i++) print i,":",name[i]}‘ num.txt

技术分享

#数组形式的系统变量,ENVIRO储存的是系统环境变量

awk ‘BEGIN { for(i in ENVIRON) print i "=" ENVIRON[i]}‘


5、变量和引用


(1)变量



a、变量替换和赋值


#变量名只能包含大小写字母、数字、下画线等符号,并且不能以数字开头

技术分享

#变量赋值

var=value:将value值赋给var

var+value:对已赋值的var,重设其值

var?value或var:?value:对未赋值的var,显示系统错误信息

var:=value:对未赋值的var,将value值赋给它

var:-value:对未赋值的var,将value值赋给它,但value值不存储到var对应的地址空间


echo ${name:-carl}

echo ${name:=carl}

技术分享

echo ${var?test}

echo ${var:?test}

技术分享

#设置只读变量

readonly rdonly


b、无类型的shell脚本变量


#shell的变量是无类型的,不支持浮点型,只支持整形和字符型

#字符型变量有一个默认整型值0,字符型变量默认为空,直接将字符串赋值给整型

#变量,整型变量就会变成字符变量,让字符变量自增1,变量就会变成

#整型,并且数值为0

name="test"

num="123"

#将字符变量name强制转换成整型,值同样还是"test"

#转换后直接当数值使用,则默认值=0

declare -i name

echo $name

#将字符型变量自增1,就会变成整型。如果变量值全部是数字,则会当作整型使用

let name++

echo $name

let name++

echo $name

技术分享


c、环境变量


#定义和清除环境变量,环境变量一般使用大写字母

MYLS=/bin/ls

export MYLS

echo $MYLS

$MYLS

技术分享

#清除环境变量,清除后变量值默认变为空

unset MYLS

echo $MYLS

技术分享

#常用环境变量

PWD:当前工作目录

OLDPWD:上一次工作目录

PATH:指明可执行文件路径

HOME:当前用户的根目录

SHELL:默认为/bin/bash

USER:登录用户名

UID:登录用户ID

PPID:创建当前进程的进程号,即当前进程的父进程号

PS1:提示符变量,用于设置一级shell提示符格式,默认为"[\u@\h \W]\$"

PS2:提示符变量,用于设置二级shell提示符格式,默认为">",输入不完全命令时会显示

\u:表示当前用户名

\@:表示以12小时制显示时间

\h:表示主机名

\W:表示当前工作目录名称

\w:表示当前工作目录完整名称

\$:如果UID为0,打印"#";否则,打印"$"

技术分享

#IFS:Shell域分隔符,默认为空格,改为":",域与域之间就以空格分隔开来

export IFS=:

echo $PATH

技术分享

#环境变量配置文件:.bash_profile、.bashrc、.bash_profile和/etc/profile

#前3个全部以隐藏形式存放到$HOME/下,针对对应的用户,而最后的是针对全局设置


d、位置参数


(2)引用



a、全引用和部分引用



b、命令替换



c、转义



6、退出、测试、判断和操作符



(1)



7、变量高级用法



8、I/O重定向




9、子shell与进程处理




10、函数




11、别名、列表和数组




12、脚本调试




13、shell实战


本文出自 “爱就行动” 博客,请务必保留此出处http://1055745601.blog.51cto.com/5003160/1660425

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。