shell-早间学习,每日一点-5
http://www.cnblogs.com/liuling/p/2013-8-4-01.html
http://www.cnblogs.com/stephen-liu74/category/326653.html
http://blog.csdn.net/varistor/article/details/8160585
给用户一个读与执行的权限(chmod u+rx aa.sh),就可以用./aa.sh来执行脚本(这样执行是开启一个子shell来执行的)
#!(读音:sha-bang)实际是一个2字节的魔法数字,这是指定一个文件类型的特殊标记,它就代表一个可执行的脚本,后面跟一个路径名
shell内部变量
$SHELL 显示当前系统用的shell
$BASH 显示bash路径
$PWD 结果 等于dirs命令结果
$GROUPS 当前用户属于的组
$UID 用户ID号
$HOME 用户home目录
预定义变量,适用所有shell,无法更改
$# 取出位置参数个数
$* 取出所有位置参数内容
$? 判断上一次命令执行结果是否正确,0代表正确,非0则不代表不正确
$1、$2、$3……位置参数 脚本位置参数个数如果超过9要用{}括起来,如${10}
$_ 保存之前执行的命令的最后一个参数
自定义变量:
declare / typeset 选项 变量名
declare 或 typeset 有同样的功能:指定变量属性。如果使用 declare 后面并没有接任何参数,那么 bash 就会主动的将所有的变量名称与内容通通叫出来,就好像使用 set 一样!
选项:
-a 将后面的变量定义成为数组 (array)
-i 将后面的变量定义成为整数(integer)
-x 将后面的变量变成环境变量,同export 一样,
-r 将后面的变量设定为只读 ,该变量不可被更改内容,也不能 unset
-f 列出脚本中的函数
例如:
typeset up_url="10.135.169.34" 或者: up_url="10.135.169.34" 建议前一种
readonly用来设置只读变量
readonly 变量名
readonly -f 函数名称
readonly -a 数组变量
shell脚本中的一些特殊字符:
# 后面的内容到行尾都是注释,不会执行(第一行的#!是个例外)
注意:echo命令中被转义的#不能作为注释,在特定的参数替换结构或数字常量表达式中也不是注释
如 echo ${PATH#*:}
echo $((2#101011))
\ 转义字符
; 命令分隔符,可以用来在一行中写多个命令
;; 终止case结构中选项
, 逗号链接了一系列的算术操作,虽然里面的内容都被运行了,最后一项被返回
` 后置引用,命令替换
: 空命令等价于NOP,也可认为与true作用相同
可以充当占位符,例如
if [ ]
then : #什么都不做,引出分支
else
.................
fi
linux终端下的一些常用快捷键,可以加快操作速度的
Ctrl+a 移到命令行首
Ctrl+e 移到命令行尾
Ctrl+u 删除到行首的命令
Ctrl+k 删除到行尾的命令
Ctrl+a后再Ctrl+k 或者Ctrl+e后再Ctrl+u就是删除输入的全部命令
Ctrl+c 终止当前任务
Ctrl+d 登出shell
Ctrl+l 相当于clear,清屏
Esc+. 重新调用前一个命令中的参数,非常有用!
dd 删除当前行
另外加上SIS 查看日志常用命令需要也整理一下:
比如:Shift +G ,看下笔记,整理一下
9.if判断都有哪些格式?
格式一:
if [ ];then
........
fi
等价于
if [ ]
then
...........
fi
格式二:
if [ ]
then
..........
else
..........
if
格式三:
if [ ]
then
......
elif [ ]
then
.......
fi
格式四:
if [ ]
then
......
elif [ ]
then
.......
elif [ ]
then
.......
elif [ ]
........
elif
.......
fi
if-grep结构:
if grep -q aa book.txt
then echo "book.txt至少有一个字符串aa"
fi
待继续:
http://blog.csdn.net/varistor/article/details/8160585