其他:
grep
fgrep 不适用真正表达式,速度块
面向过程:着眼点在过程中
面向对象:对象
SHELL脚本编程:
父shell赋予的变量 在子shell中是无法获取到的
变量赋值: name=jerry
变量的引用:$name 也可以使用${name} 大多数情况下{}是可以使用的
animal=pig
echo "there are some ${annimal}s"
echo ‘there are some ${annimal}s‘ 单引用叫做强引用 双引号弱引用
本地变量
name=value(生命周期,整个bash)
局部变量
local varname=value 作用域 当前代码段
环境变量: 作用域 当前shell进程及其子进程
export varname=value
脚本在执行时,会启动一个子shell进程,所以当前脚本申明的环境变量是有用的
命令航中启动脚本会集成当前shell环境变量
系统自动执行的脚本(非命令行启动)就需要自我定义环境变量
位置变量
$1,$2
特殊变量:
$?:上一个命令执行状态返回值:
程序执行:可能有两个返回值 执行状态返回代码:0成功,1-255失败 (1,2,127系统预留,不能随便定义)
输出重定向:
>
>>
2>
2>>
&>
/dev/null 设备,软件设备,bit bucket 作用:不显示内容,吞噬任何输出 用于消除不想显示的输出
unset name 取消变量 消除变量所占的内存gc
查看当前shell的变量
set
查看当前shell的环境变量
printenv
env
export
脚本:命令的堆砌
条件比较判断
if[ expression ]
if[ [ expression ] ]
test expression
整数比较:
-eq 测试两个整数是否相等 比如$A -eq $B 表达式的返回值是0 或者1-255
-ne 测试两个整数是否不等: 不等,为真,不等为假
-gt 测试一个数是否大于另外一个数
-lt 测试一个数是否小于另外一个数
-ge 大于后者等于
-le 小于或等于
! id user6 && useradd user6 用户不存在时,添加用户user6
反引号``
demo:
#!/bin/bash
! id user1 &> /dev/null && useradd user1 && echo "user1" | passwd --stdin user1 &> /dev/null || echo "user1 exits"
USERS=`wc -l /etc/passwd | cut -d: -f1`
echo "$USERS users"7
作用是。如果user1不存在 则添加用户user1并且设置密码为user1 否则则显示user1 exits 。并且显示user数目
脚本中一大堆的&& || 怎么运算。从左往右看,一个表达式一个表达式看,true && expr1 ,expr1才会运行 ,false || expr1 ,expr1才会运行
if 判断条件; then
statement
statement
fi
if 判断条件; then
statement1
statement2
else
statement3
fi
反引号 获取执行的结果
不写的话一般是获取命令的执行状态返回值
date +%s
shell 中的加减乘除
let c=$a+$b
c=$[$a+$b]
c=$(($a+$b))
c=‘expr $a + $b‘
提前结束脚本命令 exit; exit是可以返回自定义的脚本 状态码
exit 0
文件测试
文件存在 -e file
文件文件是否普通文件 -f file
测试是否是目录 -d path
-r
-w
-x
[ -e /etc/inittab ]
测试叫本是否有语法错误
bash -x 脚本
$# 多少个参数
$?参数列表
$*参数列表
位置参数
shift $1 $2
shift 剔除参数
字符串比较
== 相等
!=不等
-n string 测试字符串是否为空 ,空则真
-s string 与上述相反
脚本用的一些东西
bin=`dirname "${BASH_SOURCE-$0}"`
bin=`cd "$bin"; pwd`
这个能获取脚本所在的路径
---------------------
作者:qqpy789
来源:CSDN
原文:https://blog.csdn.net/qqpy789/article/details/49383055
版权声明:本文为博主原创文章,转载请附上博文链接!
原文:https://www.cnblogs.com/duanlinxiao/p/10793470.html