logo
tt's Note
  • 运维
    • 数据库
    • linux
    • vpn
    • 日志
    • 中间件
    • 服务
    • 监控
    • shell
    • windows
    • 语言
    • 云服务
    • 其他
  • 开发
    • 工具
  • 软件
    • 浏览器
    • 多端
    • win
    • mac
    • 网站
  • 项目
    • 效率工具
    • 兴趣
  • 脚本
    • jenkins
    shell概览
    rsync
    shell学习
    初始化相关
    快速脚本合集
    shell输出表格
    上一页rsync下一页初始化相关

    #shell学习

    #运行sh

    #可以直接用bash来执行
    bash 1.sh
    #如需用户./来执行,需要赋予权限
    chmod +x 1.sh
    ./1.sh

    #变量操作

    1. 创建普通变量:name=“test”,组要注意的是等号两边不能有空格。
    2. 创建局部变量:local name=“test”,使用local修饰的变量在函数体外无法访问,只能在函数体中使用。
    3. 创建只读变量:readonly name=test,这种变量不可以被修改。
    4. 使用变量:echo $name或者echo ${name}
    5. 删除变量:unset name,删除之后的变量无法被访问,需要注意无法删除只读变量。

    #特殊变量

    #获取脚本后面写的参数
    $1,$2...
    #获取脚本名称
    $n
    #获取脚本后面有多少参数(可以写if判断或者for循环)
    $#
    #获取脚本后面的所有参数
    $* $@
    #获取最后一次执行命令返回的状态
    $?

    #条件判断

    • test condition

    • [ condition ](注意 condition 前后要有空格)

    #整数之间比较大小

    -eq 等于(equal) -ne 不等于(not equal)

    -lt 小于(less than) -le 小于等于(less equal)

    -gt 大于(greater than) -ge 大于等于(greater equal)

    #按照文件权限进行判断

    -r 有读的权限(read) -w 有写的权限(write) -x 有执行的权限(execute)

    [ -w helloworld.sh ]

    #按照文件类型进行判断

    -e 文件存在(existence) -f 文件存在并且是一个常规的文件(file) -d 文件存在并且是一个目录(directory)

    #多条件判断(三元运算)

    && 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一条命令执行失败后,才执行下一条命令

    [ atguigu ] && echo OK || echo notOK

    #流程控制

    #if 判断

    注意事项:

    ①[ 条件判断式 ],中括号和条件判断式之间必须有空格

    ②if 后要有空格

    if [ 条件判断式 ]
    then
    	程序
    fi
    
    if [ 条件判断式 ]
    then
    	程序
    elif [ 条件判断式 ]
    then
    	程序
    else
    	程序
    fi

    #case 语句

    case $变量名 in
    "值 1")
    	如果变量的值等于值 1,则执行程序 1
    ;;
    "值 2")
    	如果变量的值等于值 2,则执行程序 2
    ;;
    	…省略其他分支…
    *)
    	如果变量的值都不是以上的值,则执行此程序
    ;;
    esac

    #for 循环

    #语法 1

    for (( 初始值;循环控制条件;变量变化 ))
    do
    	程序
    done
    
    sum=0
    for((i=0;i<=100;i++))
    do
    	sum=$[$sum+$i]
    done
    echo $sum

    #语法 2

    for 变量 in 值 1 值 2 值 3…
    do
    	程序
    done
    
    for i in cls mly wls
    do
    	echo "ban zhang love $i"
    done

    #while 循环

    while [ 条件判断式 ]
    do
    	程序
    done
    
    sum=0
    i=1
    while [ $i -le 100 ]
    do
    	sum=$[$sum+$i]
    	i=$[$i+1]
    done
    echo $sum

    #read 读取控制台输入

    read (选项) (参数)

    ①选项: -p:指定读取值时的提示符; -t:指定读取值时等待的时间(秒)如果-t 不加表示一直等待

    ②参数 变量:指定读取值的变量名

    reat -t 10 -p '输入:' a
    echo $a
    
    #输入密码不显示 -n表示不换行 -s表示不显示输入
    echo -n "请输入密码:"
    read -s password 

    #查看去除注释和空行的
    cat svnserve.conf |grep -v "^#"|grep -v "^$"