马哥linux学习笔记 shell脚本

来源:互联网 发布:软件研发工程师求职 编辑:程序博客网 时间:2024/04/29 14:01


其他:

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`

这个能获取脚本所在的路径


·


0 0
原创粉丝点击