shell脚本学习 二

查看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 文件的第一行给删掉






























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值