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 文件的第一行给删掉
系统变量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 文件的第一行给删掉
相关文章推荐
- KB:Exchange控制台打开缓慢
- linuxshell中"2>&1"含义
- eval用法 【shell】
- shell中单引号、双引号、反引号、反斜杠的区别
- shell以及sed awk总结
- 马哥linux学习(bash shell学习)
- Linux学习日记--基础命令(7)--bash中的变量,配置文件
- PowerShell 4.0实现自动化设置服务器
- Shell脚本调用mysql语句
- Google Shell Style Guide
- Google Shell Style Guide
- 揭秘PowerShell 5.0新特性和新功能
- shell函数返回值
- linux shell发送带附件的邮件
- shell mkfifo 阻塞式管道
- linux shell脚本攻略总结(二)
- 粗浅的增量代码上线shell脚本--菜鸟版
- 如何用 Bash 创建一个二进制发布包
- linux学习之shell练习
- linux shell