zoukankan      html  css  js  c++  java
  • shell简单入门(一)

    感觉看书慢,容易忘记,就上网找例子照着做,琢磨例子中不懂的,然后继续百度。

    shell脚本在linux下的重要性就不用多说了吧。从第一个例子开始把:

    #!/bin/bash
    echo "Hello World !" 

    执行的方式参考:http://www.jb51.net/article/53924.htm

    修改文件的权限可以参考:http://www.cnblogs.com/hpcpp/articles/6961179.html

    这个脚本只是在屏幕输出Hello World !

    继续添加内容:

    #!/bin/sh
    a="hello world!"
    num=2
    echo "a is : $a num is : ${num}nd"

    这里的a和num是用户定义的变量,

    用户变量

    Shell编程中,使用用户变量无需事先声明,同时变量名的命名须遵循如下规则:

    1). 首个字符必须为字母(a-z,A-Z);
    2). 中间不能有空格,可以使用下划线(_) ;
    3). 不能使用标点符号 ;
    4). 不能使用bash里的关键字(可用help命令查看保留关键字) 。

    注意这里的变量的左右不能有空格,可以试一下,是不是执行的时候报错,找不到这个变量。

    访问变量值

    要取用一个变量的值,只需在变量名前面加一个$ 。

    这个语法是不是有点像php的语法?

    大家看第二个例子:

    #!/bin/bash
    #name display program
    if [ $# -eq 0 ]
    then
        echo "Name not provided."
    else
        echo "Your name is $1"
    fi

    这个例子才像点样子了,#号开头的表示是注释。

    $1表示什么呢?这个是位置参数,表示输入的第一个参数,如果这样执行文件bash 02.sh

    则会输出:

    Name not provided.

    如果bash 02.sh xiaozi

    则输出:

    Your name is xiaozi

    如果bash 03.sh xiaozi ni hao
    输出还是不变,不能完整显示。这是因为有空格,空格分割的字符串看做是不同的字符串。字符串的位置也是从0开始的,把脚本倒数第2行改成$0,执行试试。
    输出:

    Your name is 02.sh

    xiaozi的位置是1,ni的位置是2,hao的位置是3,以此类推。

    如果想完整显示后面的字符串应该怎么做呢?

    #!/bin/bash
    #name display program
    if [ $# -eq 0 ]
    then
        echo "Name not provided."
    else
        echo "Your name is $@"
    fi

    把倒数第二行改成$@就行,

    常用内部变量

    $0 相当于C语言main函数的argv[0]
    $1$2... 这些称为位置参数(Positional Parameter),相当于C语言main函数的argv[1]argv[2]...
    $# 相当于C语言main函数的argc - 1,注意这里的#后面不表示注释
    $@ 表示参数列表"$1" "$2" ...,例如可以用在for循环中的in后面。
    $? 上一条命令的Exit Status
    $$ 当前Shell的进程号

    if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。

    语句以fi结尾,就是把if反过来写,这点需要稍加注意。expression 和方括号([ ])之间必须有空格,[空格expression空格]是这样的,否则会有语法错误。

    1) if ... else 语句

    if [ expression ]
    then
       Statement(s) to be executed if expression is true
    fi

    2) if ... else ... fi 语句

    if [ expression ]
    then
       Statement(s) to be executed if expression is true
    else
       Statement(s) to be executed if expression is not true
    fi

    3) if ... elif ... fi 语句

    if [ expression 1 ]
    then
       Statement(s) to be executed if expression 1 is true
    elif [ expression 2 ]
    then
       Statement(s) to be executed if expression 2 is true
    elif [ expression 3 ]
    then
       Statement(s) to be executed if expression 3 is true
    else
       Statement(s) to be executed if no expression is true
    fi

    也可以把then和if写到一行,在 if [ expression 1 ];then

    记得在then前面添加一个英文的分号.

    参考:http://c.biancheng.net/cpp/view/7005.html

    整数操作符号-ge,-gt,-le,-lt, 别忘了加-

        -eq           //等于
        -ne           //不等于
        -gt           //大于
        -lt           //小于
        ge            //大于等于
        le            //小于等于
  • 相关阅读:
    虚拟机安装Linux方案和操作系统启动流程
    CentOS7防止root密码被破解
    子网划分和VLAN
    Python之包的相关
    禁止复制文本的代码 HTML
    asp.net中Session过期设置方法
    CSS+DIV问题!DIV的最小高度问题!
    设置COOKIE过期时间的方法
    网站常见问题及解决方法(div/css)
    ASP.NET中如何删除最近打开的项目和文件的记录
  • 原文地址:https://www.cnblogs.com/hpcpp/p/6962140.html
Copyright © 2011-2022 走看看