Linux学习之shell编程(一)

1.bash是命令行用户接口,我们去查看一下每个用户登录启动的命令

我们看到root登录的时候就会自动运行 /bin/bash


2.变量

(1)环境变量

作用域:在bash及其子bash中都是有效的

用法:export 名称=值

例子:vi /etc/skel/.bash_profile


(2)本地变量

作用域:只属于某一个bash,整个bash的进程

用法:名字=值    或者是   var 名字=值

(3)局部变量

作用域:当前代码段

用法:local var 名字=值

(4)位置变量

用于脚本执行的参数,$1代表第一个参数,$2第二个,以此类推

(5)特殊变量

$? 上一个命令执行的状态的返回值

命令的执行有两种返回,一种是命令执行的结果和命令执行的状态,状态会存在特殊变量$?中

0代表成功执行,非1-255代表失败。



$# 脚本传参的个数

3.输出重定向

> 覆盖重定向

>> 追加重定向

2> 错误信息覆盖重定向

2>> 错误信息追加重定向

&>> 全部重定向


在dev下的null为黑洞设备任何信息重定向到这个设备中都无法找回

这个设备是字符设备


查看变量:set  展示环境变量和局部变量等


查看环境变量:printenv或者env或者export


5.引用变量

${变量名}   {}可以省略,但是在后面加字符的时候不能省略

比如:


6.echo

''代表字符串,强引用,""如果引种变量的情况会取引用的变量的值,弱引用

``命令替换


7.增加用户,不输出执行结果,指定用户名和密码

#!/bin/bash
#
if [ $# -eq 2 ]
then useradd $1
     echo $2 | passwd --stdin $1 &>/dev/null
     echo "useradd success"
else
     echo "args is not 2"
fi

8.条件逻辑判断

(1)条件表达式

[exception]   表达式和中括号之间必须有空格

或者 test exception

 #!/bin/bash
      2 
      3 C=`wc -l /etc/inittab | cut -d' ' -f1`
      4 if [ $C -gt 20 ] ;then
      5    echo "big file"
      6 else
      7    echo "small file"
      8 fi

(2)整数比较

-eq  是否相等    [ $A -eq $B ]

-lt 小于

-le 小于等于

-gt 大于

-ge 大于等于

(3)逻辑表达式

&& 逻辑与

|| 逻辑或

! 逻辑非

例子:如果一个用户不存在才进行添加用户

#!/bin/bash
id $1 &>/dev/null && echo "User $1 is exist" && exit 1
id $1 &>/dev/null || useradd $1
id $1 &>/dev/null && echo $2 | passwd --stdin $1 &>/dev/null && echo "User $1 add success"

(4)逻辑与和逻辑或

-a 逻辑与

-o 逻辑或

(5)算术运算

let表达式:let C=$A + $B

用$[]:$[$A+$B]

(6)时间

date +%s 取当前时间的秒数

(7)修改用户的最大使用天数

chage -M 9 root   修改root最大的使用天数


综合训练:

如果用户的密码的差7天到期就要提醒



9.循环遍历

练习:对所有的用户  hello 用户名 

      1 #!/bin/bash
      2 #
      3 C=`wc -l /etc/passwd | cut -d' ' -f1`
      4 for I in `seq $C`;do
      5   UN=`head -$I /etc/passwd | tail -1 |cut -d: -f1`
      6   BS=`head -$I /etc/passwd | tail -1 |cut -d: -f7`
      7   echo -e "hello $UN, \t  Your shell is $BS"
      8 done






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值