• shell基础入门(一)


    //获取输入内容
    #!/bin/bash
    echo "What is your name?"
    read PERSON
    read -p "who are you name: " name    //-p后面的内容是提示信息
    echo "Hello, $PERSON"
    echo "my name is: $name"
    
    //变量
    #!/bin/bash
    myUrl="http://see.xidian.edu.cn/cpp/shell/"
    readonly myUrl   
    myUrl="http://see.xidian.edu.cn/cpp/danpianji/"   #只读变量,只读变量的值不能被改变,运行脚本,结果如下:/bin/sh: NAME: This variable is read only.
    unset myUrl     //删除变量

    变量类型
    运行shell时,会同时存在三种变量:
    1) 局部变量
    局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
    2) 环境变量
    所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
    3) shell变量
    shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

    ${var}     变量本来的值
    ${var:-word}   如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。
    ${var:=word}   如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。
    ${var:?message}    如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。
    若此替换出现在Shell脚本中,那么脚本将停止运行。
    ${var:+word}   如果变量 var 被定义,那么返回 word,但不改变 var 的值。
    

    下面来看一下运算符

    [root@bogon shell]# expr 2 + 2 * 5 % 3 / 2      注意乘法那里,需要转义字符
    2
    
    
    运算符     说明  举例
    -eq     检测两个数是否相等,相等返回 true。    [ $a -eq $b ] 返回 true-ne     检测两个数是否相等,不相等返回 true。   [ $a -ne $b ] 返回 true-gt     检测左边的数是否大于右边的,如果是,则返回 true。     [ $a -gt $b ] 返回 false-lt     检测左边的数是否小于右边的,如果是,则返回 true。     [ $a -lt $b ] 返回 true-ge     检测左边的数是否大等于右边的,如果是,则返回 true。    [ $a -ge $b ] 返回 false-le     检测左边的数是否小于等于右边的,如果是,则返回 true。   [ $a -le $b ] 返回 true
    
    
    运算符     说明  举例
    !   非运算,表达式为 true 则返回 false,否则返回 true。  [ ! false ] 返回 true。
    -o  或运算,有一个表达式为 true 则返回 true。  [ $a -lt 20 -o $b -gt 100 ] 返回 true-a  与运算,两个表达式都为 true 才返回 true。  [ $a -lt 20 -a $b -gt 100 ] 返回 false
     =  检测两个字符串是否相等,相等返回 true。  [ $a = $b ] 返回 false!=  检测两个字符串是否相等,不相等返回 true。     [ $a != $b ] 返回 true-z  检测字符串长度是否为0,为0返回 true。  [ -z $a ] 返回 false-n  检测字符串长度是否为0,不为0返回 true。     [ -z $a ] 返回 truestr     检测字符串是否为空,不为空返回 true。   [ $a ] 返回 true。

    接着看一下文件测试符

    -b file     检测文件是否是块设备文件,如果是,则返回 true。  [ -b $file ] 返回 false-c file     检测文件是否是字符设备文件,如果是,则返回 true。     [ -b $file ] 返回 false-d file     检测文件是否是目录,如果是,则返回 true。     [ -d $file ] 返回 false-f file     检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。    [ -f $file ] 返回 true-g file     检测文件是否设置了 SGID 位,如果是,则返回 true。  [ -g $file ] 返回 false-k file     检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。  [ -k $file ] 返回 false-p file     检测文件是否是具名管道,如果是,则返回 true。   [ -p $file ] 返回 false-u file     检测文件是否设置了 SUID 位,如果是,则返回 true。  [ -u $file ] 返回 false-r file     检测文件是否可读,如果是,则返回 true。  [ -r $file ] 返回 true-w file     检测文件是否可写,如果是,则返回 true。  [ -w $file ] 返回 true-x file     检测文件是否可执行,如果是,则返回 true。     [ -x $file ] 返回 true-s file     检测文件是否为空(文件大小是否大于0),不为空返回 true。     [ -s $file ] 返回 true-e file     检测文件(包括目录)是否存在,如果是,则返回 true。    [ -e $file ] 返回 true

    字符串

    拼接字符串
    your_name="qinjx"
    greeting="hello, "$your_name" !"
    greeting_1="hello, ${your_name} !"
    echo $greeting $greeting_1
    获取字符串长度
    string="abcd"
    echo ${#string} #输出 4
    提取子字符串
    string="alibaba is a great company"
    echo ${string:1:4} #输出liba
    查找子字符串
    string="alibaba is a great company"
    echo `expr index "$string" is`
  • 相关阅读:
    命令拷屏之网络工具
    PHP 设计模式 笔记与总结(1)命名空间 与 类的自动载入
    Java实现 计蒜客 1251 仙岛求药
    Java实现 计蒜客 1251 仙岛求药
    Java实现 计蒜客 1251 仙岛求药
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 蓝桥杯 算法训练 字符串合并
    Java实现 LeetCode 143 重排链表
    Java实现 LeetCode 143 重排链表
  • 原文地址:https://www.cnblogs.com/biaopei/p/7730566.html
Copyright © 2020-2023  润新知