shell学习笔记

shell编程

bash配置
    vi ~/.bash_profile  这是bash初始化的目录
环境变量
    reset 将整个环境重置一下
    set 获取所有的变量
    env 查看所有的全局变量
    export AAA  将AAA编程全局变量,这样子shell就可以访问AAA的值了
    export aaa=fsdf  定义全局变量的值
    PATH=$PATH:/tmp/ddd

常用变量

!213  调用213号历史指令
!! 上一个命令
!$ 上一个命令的最后一个参数
$# 参数个数
$* 参数数组
$$  shell脚本的进程id号
echo $?  返回上一个命令的返回值  如果为0表示返回值是true
echo $aaa  aaa变量的值
{}表示枚举
touch {a,b,c}-{1,2,3} 将创建9个文件
touch a b 创建了两个 a b文件
touch "a b" 创建了一个文件
echo `ls`  执行命令ls
;用来分隔多个命令
echo hello;ls /home/ding

变量赋值

pgrep httpd  返回的是一串pid
aaa=`pgrep httpd`将执行结果赋值给变量
#表示注释

在shell脚本声明

#!/bin/bash
    第一个字符非#,表示这是一个bash脚本
    第一个字符是#,但第二个字符不是!,表示这是一个csh脚本
    第一个字符是#,且第二个字符是!后面就是指定脚本的路径了
    bash本身是不支持正则表达式的,但某些命令支持如grep ,awk等命令
在shell文件中如果一行写多个命令,命令之间用 ; 隔开

判断表达式[ expression ]

字符串测试
    运算符             说明
    string              判断string是否是非空
    -n string           判断string是否是非空
    -z string           判断string是否是空串
    string1 = string2   判断string1和string2是否相等
    string1 != string2  判断string1和string2是否不相等
    [ $USER = root ] 判断是否相等 =号两边空格不能忘记  判断字符串是否相等
    user=root 赋值
整数测试
    [ num1 op num2 ]
    运算符         说明
    num1 -eq num2   等于
    num1 -ne num2   不等于
    num1 -gt num2   大于
    num1 -ge num2   大于或等于
    num1 -lt num2   小于
    num1 -le num2   小于或等于
    [ $# -eq 0 ]  判断数值是否相等

文件测试
    [  op  file  ]
    运算符  说明 
    -a file  file是存在
    -b file  file是存在,且为块文件
    -c file  file是存在,且为字符文件
    -d file  file是存在,切为目录
    -e file  file是存在,同-a
    -f file  file存在,且为常规文件
    -s file  file是否为非空文件
    -L file  file是否为符号链接
    -r file  file是否可读
    -w file  file是否可写
    -x file  file是否可执行
    [1-9] 表示1-9 正则表达式中的判断
    [ -f /etc/passwd ] 判断/etc/passwd是否是一个文件
    [ -d /oracle/ ] 判断是否是一个目录
算数表达式
    i=i+10;
    ((i=i+10))
    ((i=i%10))//取余
    ((i=i**10))//求幂

输入
    read aaa 输入变量值
    read -p "please input your name:" AAA 提示输入变量值
输出
    echo 
    printf
调试
    bash -vx ./test.sh  调试执行过程

函数声明

匿名函数
    ()用来声明函数的
命名函数
    aaa()
    {

    }
    定义了一个aaa函数

流程控制

选择判断
    read aaa    
    if [ $aaa = ding ];then
            echo "";
    elif [ express ];then
        echo ""
    else
        echo ""
    fi
switch判断
    read aaa
    case $aaa in
        ding ) 
            echo hello world
            ;;
        root )
            echo nice to meet your
            ;;
        * )
            echo ksdljf
            ;;
    esac

for语句
    for i in aaa
        do
            kill -9 $i
        done
    seq 1 100  返回1 到 100 的所有整数
    for i in "`seq 1 9`"
        sleep 1 休息一秒
while语句
    while [ i -lt 100 ]
        do 
            i=$[$i+1]
            echo -n "$i "
        done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值