zoukankan      html  css  js  c++  java
  • hello world

    这时在centos 6.2下的第一个shell script,命名为 sh01.sh 

    1 #!/bin/bash
    2 #Program
    3 # This program shows "Hello World" in your screen.
    4 #History:
    5 #2015/9/6  zengdp First release
    6 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    7 export PATH
    8 echo -e "Hello World a 
    "
    9 exit 0
      1. 第一行 #!/bin/bash 在宣告这个 script 使用的 shell 名称:
        因为我们使用的是 bash ,所以,必须要以『 #!/bin/bash 』来宣告这个文件内的语法使用 bash 的语法!那么当这个程序被运行时,他就能够加载 bash 的相关环境配置档 (一般来说就是 non-login shell 的 ~/.bashrc), 并且运行 bash 来使我们底下的命令能够运行!这很重要的!(在很多状况中,如果没有配置好这一行, 那么该程序很可能会无法运行,因为系统可能无法判断该程序需要使用什么 shell 来运行啊!)

      2. 程序内容的说明:
        整个 script 当中,除了第一行的『 #! 』是用来宣告 shell 的之外,其他的 # 都是『注解』用途! 所以上面的程序当中,第二行以下就是用来说明整个程序的基本数据。一般来说, 建议你一定要养成说明该 script 的:1. 内容与功能; 2. 版本资讯; 3. 作者与联络方式; 4. 建档日期;5. 历史纪录 等等。这将有助於未来程序的改写与 debug 呢!

      3. 主要环境变量的宣告:
        建议务必要将一些重要的环境变量配置好,鸟哥个人认为, PATH 与 LANG (如果有使用到输出相关的资讯时) 是当中最重要的! 如此一来,则可让我们这支程序在进行时,可以直接下达一些外部命令,而不必写绝对路径呢!比较好啦!

      4. 主要程序部分
        就将主要的程序写好即可!在这个例子当中,就是 echo 那一行啦!echo 必须要加上 -e 的选项才行!

      5. 运行成果告知 (定义回传值)
        是否记得我们在第十一章里面要讨论一个命令的运行成功与否,可以使用 $? 这个变量来观察~ 那么我们也可以利用 exit 这个命令来让程序中断,并且回传一个数值给系统。 在我们这个例子当中,鸟哥使用 exit 0 ,这代表离开 script 并且回传一个 0 给系统, 所以我运行完这个 script 后,若接著下达 echo $? 则可得到 0 的值喔! 更聪明的读者应该也知道了,呵呵!利用这个 exit n (n 是数字) 的功能,我们还可以自订错误信息, 让这支程序变得更加的 smart 呢!

      运行:

    sh sh01.sh

    在一些环境的配置上面,毕竟每个人的环境都不相同,为了取得较佳的运行环境, 我都会自行先定义好一些一定会被用到的环境变量,例如 PATH 这个玩意儿! 这样比较好啦~所以说,建议你一定要养成良好的 script 撰写习惯,在每个 script 的档头处记录好:

    • script 的功能;
    • script 的版本资讯;
    • script 的作者与联络方式;
    • script 的版权宣告方式;
    • script 的 History (历史纪录);
    • script 内较特殊的命令,使用『绝对路径』的方式来下达;
    • script 运行时需要的环境变量预先宣告与配置。

    除了记录这些资讯之外,在较为特殊的程序码部分,个人建议务必要加上注解说明,可以帮助你非常非常多! 此外,程序码的撰写最好使用巢状方式,在包覆的内部程序码最好能以 [tab] 按键的空格向后推, 这样你的程序码会显的非常的漂亮与有条理!在查阅与 debug 上较为轻松愉快喔! 另外,使用撰写 script 的工具最好使用 vim 而不是 vi ,因为 vim 会有额外的语法检验机制,能够在第一阶段撰写时就发现语法方面的问题喔!


    来源 -> 戳我

  • 相关阅读:
    C/C++编程可用的Linux自带工具
    安装gcc及其依赖
    Linux上编译hadoop-2.7.1的libhdfs.so和libhdfs.a
    gcc链接参数--whole-archive的作用
    jdb调试程序
    Exception in thread "main" java.lang.Error: Unresolved compilation problem
    动态规划与分治、备忘录的区别
    leetcode-unique paths
    LeetCode总结 -- 一维动态规划篇
    编程技巧
  • 原文地址:https://www.cnblogs.com/jacson/p/4785523.html
Copyright © 2011-2022 走看看