2016-2-10 linux基础学习12

shell编程
    编译器,解释器
    静态语言:编译器语言(强类型变量),事先转换成可执行格式,甚至还需初始化
              C, C++, JAVA, C#
    动态语言:解释型语言(弱类型变量),边解释变执行,甚至不区分类型
              PHP, SHELL, python, perl
    
    面向过程:Shell, C
    面向对象:JAVA, Python, perl, C++
    
    与:只要有一个为假,结果一定为假
    或:只要有一个为真,结果一定为真
    
bash变量类型:
        环境变量
        本地变量
        位置变量
        特殊变量
    
    本地变量:
        VARNAME=VALUE:作用域为整个bash进程
    局部变量:
        local VARNAME=VALUE:作用域为当前代码段
    环境变量:作用域为当前shell进程及其子进程:
        export VARNAME=VALUE
        
        VARNAME=VALUE
        export VARNAME
            "导出"

位置变量:
        $1, $2, ……
    特殊变量:
    $? : 上一个命令的执行状态返回值
        程序执行,有两类返回值
        程序执行结果
        程序转态返回代码(0-255)
        0:正确执行
        1-255:错误执行  1,2,127系统预留
    撤销变量:
        unset VARNAME
        
    变量名称要求
        1、只能包含字母,数字,下划线,并且不能以数字开头
        2、不应该跟系统中已有的环境变量重名    
        3、最后做到见名知意
        
    查看当前shell变量
        set
    查看当前shell中的环境变量
        printenv
        env
        export
    
    /dev/null:软件设备 bit bucket数据黑洞
    
    脚本在执行时会启动一个子shell进程
        命令行中启动的脚步会继承当前shell环境变量
        系统自启动执行的脚步(非命令行启动)就需要自我定义需要各环境变量
    
    脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序
    shebang:魔数
    脚本第一行:#!bin/bash
                #注释行,不执行

运行脚本    
    法一
        1,编写脚本
        2,加权限(独立执行必须加权限)
        3,当前路径加到环境变量中去,或在当前路径下执行
    法二:
        1,编写脚本
        2,在解释器下解释脚本,当做bash的参数

条件判断:
    如果用户不存在
        添加用户,给密码并显示添加成功
    否则
        不添加
        
bash中如何实现添加判断?
条件测试类型:
    整数测试
    字符测试
    文件测试

条件测试的表达式:
    [ expression ]
    [[ expression ]]
    test expression

整数比较:
        -eq:测试两个整数是否相等;比如$A -eq $B
        -ne:测试两个整数是否不等,不等为真,否则为假
        -gt:测试一个数是否大于另一个数:大于为真,否则为假
        -lt:测试一个数是否小于另一个数:小于为真,否则为假
        -ge:大于或等于
        -le:小于或等于
        
        命令间的逻辑关系:
            逻辑与: &&(只要有一个为假,结果一定为假)
                    第一个条件为假,第二个就不必执行
                    第一个条件为真,就要执行第二个
            逻辑或:||(只要有一个为真,结果一定为真)
                    第一个条件为真,第二个就不必执行
                    第一个条件为假,就要执行第二个

课堂1、如果/etc/inittab文件的行数大于100,就显示有几行的文件
            wc -l /etc/inittab |

课堂2、如果用户存在,就显示用户已经存在,否则,就添加此用户
            ! id user1 && echo "user1 exists." || useradd user1
    课堂3、如果用户不存在,就添加,否则,显示其已存在
            ! id user1 && useradd user1 || echo "user1 is "

课堂4、如果用户不存在,添加并且给密码,否则,显示其已经存在
            ! id user1 && useradd user1 && echo “user1” | passwd --stdin user1 || echo "user1 is"

5-3练习
1、写一个脚本,完成以下任务:
    (1)使用一个变量保存一个用户名
    (2)删除此变量中的用户,且一并删除其家目录
    (3)显示“用户删除完成”类信息

2、写一个脚本,完成以下要求:
    (1)添加3个用户user1,uuser2,user3,但要先判断用户是否存在,不存在而后再添加
    (2)添加完成后,显示一共添加了几个用户,当然,不能包括事先存在而没有添加的
    (3)最后显示当前系统上共有多少个用户

3、写一个脚本,完成以下要求:
    (1)给定一共用户,如果其UID为0,就显示此为管理员
    (2)否则,就显示为普通用户

条件判断,控制结构:
    单分支if语句
        if 判断条件,then
            statement1
            statement2
            ...
        fi
    双分支的if语句
        if 判断条件,then
            statement1
            statement2
            ...
        else
            statement4
            statement5
            ...
        fi

时间: 2024-12-19 15:17:43

2016-2-10 linux基础学习12的相关文章

linux基础学习笔记——操作大全

作者:liaoyi 更新时间:2014-6-2 ****************基本操作***************** 关机 shutdown -h now    root用户               init 0              root用户halt      root+一般用户poweroff 重启shutdown -r now    root用户init6     root用户reboot            root+一般用户 注意:1.shutdown 比较灵活,可

linux基础学习【4】

系统进程 一.什么是进程 进程 : 一个正在运行中的程序 程序被触发后,执行者的权限与属性,程序的程序码与所需数据等都会被载入内存中,操作系统会给予这个内存内的单元一个识别码 (PID). 二.查看进程 1.图形方式查看 命令:`gnome-system-monitor` 2.进程查看命令 命令:`ps` ps -A/-e 显示所有(包括不同终端不同用户)进程(PID,TTY,TIME,CMD) ps -a 当前环境中运行的进程,不包含环境信息(PID,TTY,TIME,CMD) ps -u (

python基础学习12(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #python class #面向对象编程oop思想,3个特性:封装.继承.多态,在其他方面的功能,比如重载,模拟等,也可以自定义自己需要的类 #在python中,面向对象主要2个:类和类实例 #类与实例 #类与实例有关

c/c++unix/linux基础学习笔记-常用命令和vi的使用

linux 基本命令的使用-命令在ubuntu下面执行,有些命令通用其他linux,有些不通用. 多条命令间用;号隔开,回车后可以一起执行. clear-前屏,pwd显示当前目录,cd跳转目录. sudo [命令]  -ubuntu 下以管理员身份运行命令. 一般情况下,运行当前目录下的程序,要用 ./文件名 执行. 查看当前shell名称:ps 进入另外一个shell,直接输入shell名称:ksh/tcsh/sh/bash,退出一个shell用:exit. 切换shell命令,如:exec

Linux基础学习-crond系统计划任务

系统计划任务 大部分系统管理工作都是通过定期自动执行某个脚本来完成的,那么如何定期执行某个脚本,从而实现运维的自动化,这就要借助Linux的cron功能了. 计划任务分为一次性计划任务和周期性计划任务. 一次性计划任务 每晚11店30分开启网站服务. 周期性计划任务 每周一的凌晨3点30分把/var/www/html目录打包备份为backup.tar.gz 顾名思义,一次性计划任务只执行一次,一般用于满足临时的工作需求,可以使用at命令实现. 如果你的Linux没有此命令可以使用yum inst

linux基础学习【5】

sshd服务,服务管理及文件传输 一.控制服务 1.什么是服务 2.用什么控制服务 系统初始化进程可以进行相应的控制 3.当前系统初始化进程是什么 systemd 系统初始化进程 pstree 显示系统中的进程树 进程树 4.系统控制命令 ssh(client)客户端---->sshd(server)服务器 命令:`systemctl` systemctl status sshd 查看sshd服务的状态inactive(不可用)/active(可用) systemctl start sshd 开

linux基础学习随笔【根本没有排序哈】

直接整:init 3 5 6 0;init 3代表切换到字符界面,5代表切换到图形界面:6表示重启,等同于reboot:0表示关机=poweroff:改主机名:hostnamectl set-hostname centos7.localdomain;[记不住,TAB键补全]查看操作系统linux版本:cat /etc/centos-release;或者通过安装lsb_release -a ;查看内核版本: uname -rlscpu 查看CPU使用情况:lsblk查看硬盘:free - h查看内

linux基础学习四

本次继续学习linux基础命令,包括stat.touch.cp.mv.rm.tree.mkdir.rmdir stat 命令格式 stat [OPTION]... FILE... 命令功能 显示文件的时间戳,即访问时间.修改时间和改变时间 stat [OPTION]... FILE...      [[email protected] ~]# stat newfile       File: `newfile'      Size: 0          Blocks: 0          I

一篇文章带你入门Linux——马哥Linux基础学习笔记

1.课程体系: 中级: 初级:系统基础 中级:系统管理.服务安全及服务管理.Shell脚本: 高级: MySQL数据库: cache & storage 集群: Cluster lb: 4layer 7layer ha: 分布式: zookeeper 分布式文件系统 虚拟化技术: xen kvm Openstack:IAAS云: 运维工具: ansible puppet(ruby), saltstack(python) 监控工具: zabbix 大数据处理: hadoop spark, stor