您的位置:首页 > 运维架构 > Shell

shell脚本学习 二

2015-09-25 16:30 465 查看
查看history root用户下用命令 history

系统变量TMOUT=6 #6秒不操作就退出当前连接

tail -1 表示 读出倒数第一行

定义全局变量的方法:

1、export 变量名=value

2、变量名=value;export 变量名

导出一下,其他程序就可以用

环境变量常用的放在/etc/profile里头

单引号不会解析单引号里面内容

双引号会把变量内容解析

以上单双引号的规则在awk 命令里是特例(功能相反 )

习惯:数字不加引号,其他默认加双引号

把命令当作变量的定义方法

1、cmd=` date +%F` #这里用的是反引号

2、cmd=$(date +%F)

引发混淆的脚本名情况 用大括号扩起来

tar zcf etc_${cmd}_oldboy /etc 打包到etc 目录下

seq -s "_$” 0 10 从零到10按照每个间隔一个_$ 的格式生成序列

-s 表示生成的一行,不加表示生成一列

特殊变量

$0 获取当前执行shell 脚本的文件名,包括脚本路径

$n 获取 当前执行shell 的第n个参数值,n=1..9 ,当n为0时表示脚本的文件名,如果n大于10 用大括号扩起来${10}

$# 表示当前脚本传入参数的个数

只取路径用 dirname $0

只取名字用 basename $0

$$ 获取当前shell 的进程号(PID)

$? 获取执行上一条指令的返回值(0为成功,非零为失败,2 无权限,126找到命令无法运行,127未找到命令,128 命令被系统强制结束)

ps -ef|grep xxx.sh 查看对应进程

shift 表示把所有参数位置左移一个 $1由$2替换,$2由$3替换。。。

求字符串的长度echo ${#xxxx} 或者 echo $xxxxx|wc -m

从第二个字符开始取,取到结尾echo ${xxxxx:2} 第二个字符不包括在内

或者也可以加上长度 echo ${xxxx:2:2}

也可以 echo ${xxxx}|cut -c 3-4

整体查找替换 echo "${/%jpg/JPG}" 把文件名里小写的jpg 换成 JPG

或者用sed 的方法 echo $file|sed 's/jpg/JPG/g'

awk sed 操作

不知道命令的参数用man 命令进行查看。

result=${oldgirl :-UNSET} # oldgirl没有内容就返回给result为UNSET

result=${oldgirl :=UNSET} # oldgirl没有内容就返回给result为UNSET,并且返回给oldgirl为UNSET

没有冒号的情况:result=${oldgirl-UNSET} # oldgirl没有内容就用UNSET代替

path=/server/backup

cd /tmp/ #如果path 没有值,就从当前目录开始删除

find ${path:=/tmp/} -name "*.tar.gz" -type f|xargs rm -f

sh -x d.sh 表示可以把全部变量替换转意后的脚本输出出来(-x 表示调试)

sed -i ‘1d’ d.sh 把d.sh 文件的第一行给删掉
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: