SHELL基础

#  表示注释

set  列出所有的变量

''   内容原封不动指定给了变量

""  取消了空格的作用,特殊符号的含义保留

unset  删除变量

 

特殊变量:

$0  这个程序所有的参数

$n  这个程序的第n个参数值

$*  这个程序的所有参数

$#  这个程序的参数个数

$$  这个程序的PID

$!  执行上一个后台程序的PID

$?  执行上一个指令的返回值

 

Read命令  从键盘读入数据,赋值给变量

expr命令  Shell变量的算术运算符,语法:expr 表达式。

      如:expr 3 + 5  注意:运算符之间要有空格。

      如:value='expr $c \* $b'  \乘法需要

test    变量测试语句,语法:test 测试条件。测试范围:整数,字符串,条件

      测试字符串:test $str1 == $str2

            test $str1 !== $str2 

            test $str1  如果$str1不为空,则返回结果为真

            test -n $str1  如果字符串长度不为零,则返回结果为真

            test -z $str1  如果字符串长队为零,则返回结果为真

      文件测试:test -d file  是否为目录

           test -f file  是否为文件

           test -x file  是否可执行

           test -r file  是否可读

           test -w file  是否可写

           test -e file  是否存在

           test -s file  是否大小为空,是否为空文件

           说明:test -x file 简写为  [ -x file ]

      整数测试:test int1 -eq init2

           test int1 -ge init2  >=

           test int1 -gt init2  >

           test int1 -le init2  <=

           test int1 -lt init2  <=

           test int1 -ne init2  不等于 

           说明:也可以省略test写成  [ init1 -lt init2 ]

 

流程控制语句:

if 语句

  语法:if 条件

     then

      语句

     fi

  说明:利用 ; 可放在一行

  多个条件联合:

      -a 或 &&  逻辑与,都成立时,结果为真

      -o 或 ||   逻辑或,两个条件有一个成立,结果为真

  

#!/bin/bash
#例1
echo "if test" if [ -x /bin/ls ] ; then   /bin/ls fi echo "=================" echo "if test" if [ -x /bin/ls ] then   /bin/ls fi

以上信息来自如下教程:

https://edu.aliyun.com/lesson_155_1964?spm=5176.10731542.0.0.XOQNlG#_1964

 

将wndows中的脚本导入到linux系统后无法执行:打开时候正常,运行时候不正常

    rpm -ivh /mnt/Packagets/dos2unix-3.1-37.el6.x86_64.rpm

    dos2unix 脚本.sh

 

shift  参数左移指令,每执行一次,参数序列顺序左移一次,$#的值减1,用于分别处理每个参数,移出去一个参数

    问题:计算参数之和

#!/bin/bash
if [ $# -le 0 ]
then
    echo "erro!:not enough parameters"
    exit 124
fi
sum=0
while [ $# -gt 0 ]
do
    sum='expr $sum + $1'
    shift
done
echo $sum

以上信息来自如下教程:

https://edu.aliyun.com/lesson_155_1970?spm=5176.10731542.0.0.eIImdE#_1970

 

 

shell函数:  把一个功能封装起来,使用时候直接调用函数名。这样的脚本好处:模块化,可读性强。

语法:

函数名()

{

命令序列

}

注:函数调用时,不带()

函数中的变量都是全局变量,没有局部变量

调用函数时,可以传递参数。在函数中用$1、$2来引用传递的参数

 

以上信息来自如下教程:

https://edu.aliyun.com/lesson_155_1971?spm=5176.10731542.0.0.yaeztV#_1971

posted on 2018-08-26 22:26  CevinChen  阅读(125)  评论(0编辑  收藏  举报