• 【shell】【二】基本命令


    1、新建test.sh文件

    vim test.sh
    进入vim界面,i进入编辑模式,输入下面的代码,然后esc,进入底部命令模式,然后:wq!强制保存并退出。
    1 #!/bin/bash
    2 echo "hello word"
    或者直接用sublime等新建后缀是.sh的文件。

    2、给.sh文件添加可执行权限

    1 chmod +x ./test.sh  #使脚本具有执行权限
    2 chmod 777 ./test.sh #777可读可写可执行
     
     

    3、运行该文件

    1 ./test.sh #执行脚本
     

    4、shell变量

    4.1.定义变量时,变量名不加美元符号

    1 your_name="runoob.com"
    2 
    3 有效的变量名称:
    4 RUNOOB
    5 LD_LIBRARY_PATH
    6 _var
    7 var2
    定义变量规则:
    • 变量名和等号之间不能有空格
    • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
    • 中间不能有空格,可以使用下划线(_)。
    • 不能使用标点符号。
    • 不能使用bash里的关键字(可用help命令查看保留关键字)。

    4.2.使用变量

    以下两种输出方式都ok,但是尽量用第二种
    your_name="runoob.com"
    echo $you_name
    echo ${you_name}
    echo I am good at ${you_name}Script .     会输出完整的句子
    echo I am good at $you_name Script 。     会将you_name理解为新的变量,值为空

    4.3.只读变量

    1 #!/bin/bash
    2 myUrl="http://www.google.com"
    3 readonly myUrl
    4 
    5 
    6 运行脚本会报错
    7 /bin/sh: NAME: This variable is read only.

    4.4.删除变量

    #!/bin/sh
    myUrl="http://www.runoob.com"
    unset myUrl
    echo $myUrl
    
    注意:unset不能删除只读变量
     

    4.5.变量类型

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

    4.6.字符串操作

     1 获取字符串长度#
     2 string="abcd"
     3 echo ${#string} #输出 4
     4 
     5 截取字符串
     6 string="runoob is a great site"
     7 echo ${string:1:4} # 输出 unoo
     8 
     9 查找子字符串
    10 string="runoob is a great site"
    11 echo `expr index "$string" io`  # 输出 4
    12 注意: 以上脚本中 ` 是反引号,而不是单引号 ',不要看错了哦。

    5、数组

     
    数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)
    Shell 数组用括号来表示,元素用"空格"符号分割开
     1 定义数组,在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
     2 数组名=(值1 值2 ... 值n)
     3 array_name=(value0 value1 value2 value3)
     4 或者
     5 array_name=(
     6 value0
     7 value1
     8 value2
     9 value3
    10 )
    11 或者
    12 array_name[0]=value0
    13 array_name[1]=value1
    14 array_name[n]=valuen
    15 
    16 读取数组
    17 valuen=${array_name[n]}
    18 
    19 使用 @ 符号可以获取数组中的所有元素,例如:
    20 echo ${array_name[@]}
    21 
    22 
    23 # 取得数组元素的个数
    24 length=${#array_name[@]}
    25 # 或者
    26 length=${#array_name[*]}
    27 # 取得数组单个元素的长度
    28 lengthn=${#array_name[n]}
    29 
    30 
    31 例子
    32 arr=(9 2 'Aaa' 'B')
    33 echo ${arr[@]}
    34 echo ${arr[*]}
    35 len=${#arr[*]}
    36 echo $len
    37 echo "数组元素个数为: ${#arr[@]}"
    38 
    39 
    40 输出=========
    41 ./test2.sh 
    42 9 2 Aaa B
    43 9 2 Aaa B
    44 4
    45 数组元素个数为: 4

    6、注释

     1 单行注释
     2 #--------------------------------------------
     3 # 这是一个注释
     4 # author:菜鸟教程
     5 多行注释
     6 :<<EOF
     7 注释内容...
     8 注释内容...
     9 注释内容...
    10 EOF
    11 或者
    12 :<<'
    13 注释内容...
    14 注释内容...
    15 注释内容...
    16 '
    17 
    18 :<<!
    19 注释内容...
    20 注释内容...
    21 注释内容...
    22 !

    7、Shell 传递参数

     1 1、传递参数
     2 echo "hi,no: $0"
     3 echo "hi,no: $1"
     4 echo "hi,no: $2"
     5 
     6 运行
     7 ./test1.sh 'one' 'two' 'three'
     8 
     9 Hello World !
    10 hi,no: ./test1.sh    -- 会把运行的那个文件名默认是第0个字段
    11 hi,no: one
    12 hi,no: two
    13 
    14 
    15 2、$*与$@的区别
    16 都是引用所有的参数,但是$*是把出入的参数当成一个字符串去展示,$@当成一个个的字符
    17 echo "-- $* 演示 ---"
    18 for i in "$*"; do
    19     echo $i
    20 done
    21 
    22 echo "-- $@ 演示 ---"
    23 for i in "$@"; do
    24     echo $i
    25 done
    26 
    27 运行
    28 ./test1.sh 'one' 'two' 'three'
    29 -- $* 演示 ---
    30 one two three
    31 -- $@ 演示 ---
    32 one
    33 two
    34 three

    8、Shell 基本运算符

    • 算数运算符
    • 关系运算符
    • 布尔运算符
    • 字符串运算符
    • 文件测试运算符
    # 运算符,expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
    val=`expr 1 + 1`
    echo $val
    注意:表达式和运算符之间要有空格,1+1正确
     

    8.1、算数运算符

     1 #!/bin/bash
     2 
     3 # 运算符,expr 是一款表达式计算工具,使用它能完成表达式的求值操作。1 + 1之间必须有空格
     4 val=`expr 1 + 1`
     5 echo $val
     6 
     7 a=10
     8 b=20
     9 if [ a = b ]
    10 then
    11     echo "a等于b"
    12 else
    13     echo "a不等于b"
    14 fi
    15 
    16 a=10
    17 b=20
    18 
    19 val=`expr $a + $b`
    20 echo "a + b : $val"
    21 
    22 val=`expr $a - $b`
    23 echo "a - b : $val"
    24 
    25 val=`expr $a * $b`
    26 echo "a * b : $val"
    27 
    28 val=`expr $b / $a`
    29 echo "b / a : $val"
    30 
    31 val=`expr $b % $a`
    32 echo "b % a : $val"
    33 
    34 if [ $a == $b ]
    35 then
    36    echo "a 等于 b"
    37 fi
    38 if [ $a != $b ]
    39 then
    40    echo "a 不等于 b"
    41 fi

    8.2、关系运算符

     1 -eq =====equal等于
     2 -ne =====not equal 不等于
     3 -gt =====greater than a>b
     4 -lt =====less than a<b
     5 -ge =====greater than or equal a>=b
     6 -le =====less than or equal a>=b
     7 
     8 
     9 
    10 a=10
    11 b=20
    12 
    13 if [ $a -eq $b ]
    14 then
    15    echo "$a -eq $b : a 等于 b"
    16 else
    17    echo "$a -eq $b: a 不等于 b"
    18 fi
    19 if [ $a -ne $b ]
    20 then
    21    echo "$a -ne $b: a 不等于 b"
    22 else
    23    echo "$a -ne $b : a 等于 b"
    24 fi
    25 if [ $a -gt $b ]
    26 then
    27    echo "$a -gt $b: a 大于 b"
    28 else
    29    echo "$a -gt $b: a 不大于 b"
    30 fi
    31 if [ $a -lt $b ]
    32 then
    33    echo "$a -lt $b: a 小于 b"
    34 else
    35    echo "$a -lt $b: a 不小于 b"
    36 fi
    37 if [ $a -ge $b ]
    38 then
    39    echo "$a -ge $b: a 大于或等于 b"
    40 else
    41    echo "$a -ge $b: a 小于 b"
    42 fi
    43 if [ $a -le $b ]
    44 then
    45    echo "$a -le $b: a 小于或等于 b"
    46 else
    47    echo "$a -le $b: a 大于 b"
    48 fi

    8.3、布尔运算符

     1 a=10
     2 b=20 
     3 if [ $a != $b ];then
     4     echo "$a != $b : a不等于b"
     5 else
     6     echo "$a == $b : a等于b"
     7 fi
     8 if [ $a -lt 100 -a $b -gt 15 ]
     9 then
    10    echo "$a 小于 100 且 $b 大于 15 : 返回 true"
    11 else
    12    echo "$a 小于 100 且 $b 大于 15 : 返回 false"
    13 fi
    14 if [ $a -lt 100 -o $b -gt 100 ]
    15 then
    16    echo "$a 小于 100 或 $b 大于 100 : 返回 true"
    17 else
    18    echo "$a 小于 100 或 $b 大于 100 : 返回 false"
    19 fi
    20 if [ $a -lt 5 -o $b -gt 100 ]
    21 then
    22    echo "$a 小于 5 或 $b 大于 100 : 返回 true"
    23 else
    24    echo "$a 小于 5 或 $b 大于 100 : 返回 false"
    25 fi

    8.4、逻辑运算符

     1 a=10
     2 b=20
     3 
     4 if [[ $a -lt 100 && $b -gt 100 ]];then
     5    echo "返回 true"
     6 else
     7    echo "返回 false"
     8 fi
     9 
    10 if [[ $a -lt 100 || $b -gt 100 ]];then
    11    echo "返回 true"
    12 else
    13    echo "返回 false"
    14 fi

    8.5、字符串运算符

     1 a="abc"
     2 b="efg"
     3 
     4 if [ $a = $b ]
     5 then
     6    echo "$a = $b : a 等于 b"
     7 else
     8    echo "$a = $b: a 不等于 b"
     9 fi
    10 if [ $a != $b ]
    11 then
    12    echo "$a != $b : a 不等于 b"
    13 else
    14    echo "$a != $b: a 等于 b"
    15 fi
    16 if [ -z $a ]
    17 then
    18    echo "-z $a : 字符串长度为 0"
    19 else
    20    echo "-z $a : 字符串长度不为 0"
    21 fi
    22 if [ -n "$a" ]
    23 then
    24    echo "-n $a : 字符串长度不为 0"
    25 else
    26    echo "-n $a : 字符串长度为 0"
    27 fi
    28 if [ $a ]
    29 then
    30    echo "$a : 字符串不为空"
    31 else
    32    echo "$a : 字符串为空"
    33 fi

    8.6、文件测试运算符

    9、echo 命令

    9.1、输出普通字符串

    echo "It is a test"
    结果:It is a test

    9.2、显示转义字符

    echo ""It is a test""

    结果:"It is a test"

    9.3、显示变量

    #!/bin/sh
    read name 
    echo "$name It is a test"
    结果:
    OK                     #标准输入
    OK It is a test        #输出

    9.4、显示换行

    echo -e "OK! 
    " # -e 开启转义
    echo "It is a test"
    结果:
    OK!
    
    It is a test

    9.5、显示结果保存到文件

    echo "It is a test" > myfile
     

    9.6、显示命令字符对应的结果

    echo `date`
    注意: 这里使用的是反引号 `, 而不是单引号 '。
    结果将显示当前日期
    2020年 7月28日 星期二 15时05分27秒 CST

     

     

  • 相关阅读:
    IOS tableView的数据刷新
    IOS Modal(切换另外控件器方式)
    IOS UITabBarController(控制器)的子控制器
    iOS 应用数据存储的常用方式
    IOS 获取文本焦点 主动召唤出键盘(becomeFirstResponder) and 失去焦点(退下键盘)
    集合类型
    提取URL的搜索字符串中的参数
    本地对象、内置对象、宿主对象
    声明函数 执行上下文 匿名函数
    完善tab页面定位
  • 原文地址:https://www.cnblogs.com/zhangxue521/p/13391727.html
Copyright © 2020-2023  润新知