shell基础-day2

1,在bash中使用;,&&,||的区别。

    ;不具有逻辑判断功能,不论前面的命令是否成功都会依次执行后面的命令,shell命令,如果一行中有不只一个就需要加;或&&或||

    &&和||具有逻辑判断功能。使用&&连接,只有当前面的命令执行成功后面的命令才会执行。如果使用||连接,当前面的命令执行失败才会执行后面的命令。ping baidu.com && echo "is up" || echo "is down"当ping baidu.com 执行成功的时候会输出is up 不然会输出is down。在bash中0代表真,非0代表假。

2,shell中的通配符

    * 匹配任意多个字符

    ?匹配任意一个字符

    []匹配括号中任意一个字符[abc][a-z][^a-z]

    ()在子shell中执行(cd) 

    {}是集合的意思 touch file{1...9},这个语句创建的是9个文件

    转义字符  \

3,shell脚本中的自定义变量

      变量的命名和c语言相同。

      变量名字=变量值,这样就定义了一个变量,当需要这个变量的值得时候,使用$变量名或者${变量名}就可以了。

      注意这种事写死的情况,也可以写成从键盘读入,可以写成 read 变量的名字 。这样没有提示,可以加上提示,把命令写成read -p "please input a 变量的名字:  "  变量的名字

      比较特殊的变量$1,$2... 注意,这个变量是在执行脚本的时候的参数,其中$1是执行脚本的时候的第一个变量,$2是执行脚本的时候的第二个变量。

      在脚本中可以包含另一个脚本中的所有的内容,只需要把脚本的路径加上脚本中就可以的。

4,shell中的环境变量

    可以使用export关键字就可以定义环境变量,export 变量名=变量值,或者直接export已经存在的变量,注意自定义变量的影响范围是在当前shell,而环境变量的影响范围是在当前shell以及子shell中生效。

    可以使用env命令来查看系统中定义了哪些环境变量。

5,shell中的预定义变量

    $0 脚本名,注意这个名字是带路径的,如果想获得文件的名字,可以 basename $0

    $* 所有的参数

    $@ 所有的参数

    $#  参数的个数

    $$  当前进程的PID

    $!   上一个后台进程的PID

    $?  上一个命令的返回值 0表示成功

6,shell中' '是强引用," "是弱引用。效果见下图:

7,变量的运算

     1)整数运算

          方法一:expr   

                       expr 1 + 2    输出的是3,而echo 1 + 2 输出的是字符串 1 + 2

                       expr $num1 + $num2  输出的是变量相加的值

          方法二: $(())  和  $[]

                       echo $((3*5))  注意这里的乘号不在需要转义

          方法三:let 

                        let sum = 2 + 3; echo $sum

                        let i++; echo $i 

8,变量"内容"的删除、替换、切片

命令 含义 显示结果
echo ${url}   输出变量url的内容   www.sina.com.cn
echo ${url#www.}   输出变量url删除"www."后的内容,但是url的内容却没有改变。只是输出的显示内容变了。 sina.com.cn
echo ${url#*.} 输出显示url删除了包括第一个.在内的之前的字符的剩余字符。但是url的内容却没有改变。只是输出的显示内容变了。 sina.com.cn
echo ${url##*.} 输出显示url删除了包括最后一个.在内的之前的字符的剩余字符。但是url的内容却没有改变。只是输出的显示内容变了。 cn
echo ${url%.*} 把从后向前删删除到第一个.后的剩余内容输出。 www.sina.com
echo ${url%%.*} 把从后向前删删除到最后一个.后的剩余内容输出。 www
echo ${url:5:5} 截取从第5个字符(包括)往后的4个字符输出。 ina.c
echo ${url/sina/baidu} 把url中第一个sina替换成baidu输出 www.baidu.com.cn
echo ${url//n/N} 把url中所有的n替换成N输出 www.siNa.com.cN

      注意上面记录的多种操作,变量url的值都没有改变,只是输出的时候进行了改变。

      注意语法:${变量名-新的变量值}  变量没有被赋值,会使用“新的变量值”替代;变量有被赋值(包括空值):不会被替代。

                         ${变量名:-新的变量值}  变量没有被赋值(包括空值),会使用“新的变量值”替代;变量有被赋值:不会被替代。

9,shell中各种奇怪的符号的含义

     ()     在子shell中执行

     (())   数值比较,运算

     $() 命令替换

      $(()) 整数运算

      {} 集合

      ${} 变量引用

      [] 条件测试

      [[]] 条件测试。支持正则 =~

      $[] 整数运算

10,

11,看完这两篇博客,应该掌握下面的几方面知识点。

    

猜你喜欢

转载自blog.csdn.net/xiaoan08133192/article/details/108875067