1. shell 脚本文件第一行:    #!/bin/sh 或 #!/bin/bash

  "#!"  又称为纪数,在执行bash脚本的时候,内核会根据它来确定该用哪个程序来解释脚本中的内容。这一行必须在脚本顶端的第一行,如果不是第一行则为注释

  注: 为什么 sh 和 bash 都可以呢? 因为 sh 是 bash的链接文件 , 相当于windows中的link文件 。

  如果脚本的开头不指定解释器,那么,就要用对应的解释器来执行脚本,例如:  bash  test.sh   ,   python  test.py

2. 注释符号:    # 

3. 反引号 : `pwd`    =>    echo   `pwd`/fcz.sh   , 反引号的作用是执行命令时会解析反引号中的命令

4. 执行shell脚本的多种方法及区别

  (1)  sh fcz.sh

  (2)  bash fcz.sh

  (3)  source fcz.sh

  (4)  .  fcz.sh

  区别:   sh 与 bash是一样的效果, source 和 . 是一样的效果 。

      sh 与 bash 招待的函数或变量不能在别的shell脚本文件中被引用,

      source 和 . 执行的函数或变量可以在别的shell脚本文件中被引用 .

  面试题 :   cat  test.sh   =>(输出)   user=`whoami`

        sh  test.sh

        echo  $user

    问 : 执行echo  $user命令的结果是什么?

    答案 : 空的,什么没有. (原因: 当执行sh  test.sh时,是在一个新的sh脚本环境执行的,在当前的sh环境中(当前的控制器也是一个sh环境)是没有找到user变量                      的).

5. shell脚本文件开发的基本规范和习惯

  (1) 第一行还是指定脚本解释器

  (2) 开头加版本版权等信息

    #Date:   2016-1-17

    #Author: Created by fcz

    #Mail: 315400120@qq.com

    #Function: This scripts function is ...

    #Version: 1.1

  (3) 配置vim编辑文件时自动加上以上信息,方法是修改 ~/.vimrc配置文件

  (4) 脚本中不用中文注释,尽量用英文,宁使用拼音也不要使用中文

  (5) 脚本以.sh为扩展名

了解shell的更多相关文章

  1. Shell替换

    如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. #!/bin/bash a= echo -e "Value of a is ...

  2. Shell特殊变量

    $ 表示当前Shell进程的ID,即pid $echo $$ 运行结果 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数 ...

  3. shell变量

    定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...

  4. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  5. shell简介

    Shell作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. shell使用的熟练程度反映了用户对U ...

  6. Shell碎碎念

    1. 字符串如何大小写转换 str="This is a Bash Shell script." 1> tr方式 newstr=`tr '[A-Z]' '[a-z]' < ...

  7. MongoDB学习笔记二—Shell操作

    数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...

  8. 使用C#给Linux写Shell脚本

    在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...

  9. Linux环境下shell和vim中乱码原因及消除办法

    shell和vim中乱码原因及消除办法 作者:Jack47 在Linux下开发,经常遇到乱码问题:shell或者vim中显示不了中文,或者能够显示,但不能输入中文.每次都是上网去搜,或者同事告诉我一些 ...

  10. 【说解】在shell中通过mkfifo创建命名管道来控制多个进程并发执行

    背景: 工作中有两个异地机房需要传数据,数据全名很规范,在某个目录下命名为统一的前缀加上编号.如/path/from/file.{1..100}.而机房间的专线对单个scp进程的传输速度是有限制的,比 ...

随机推荐

  1. javascript 一个关于时间排序的算法(一个页面多个倒计时排序)

    上周要做一个活动页面 秒杀列表页 需要一个时间的算法排序 自己琢磨了半天想了各种算法也没搞出来,后来问了下一个后台的php同学 他写了个算法给我看了下 ,刚开始看的时候觉得这就是个纯算法,不能转化成页 ...

  2. DataGridView中的单元格提示错误信息

    http://stackoverflow.com/questions/7713988/winforms-problems-validating-a-cell-in-a-datagridview

  3. binary-tree-maximum-path-sum(mock)

    注意: // 注意,如果一个类放在另一个类里面,初始化时候会报错 Solution is not a enclosing class// 这是因为如果TreeNode不是static,那么要求先有外部 ...

  4. HDU 1404 (博弈) Digital Deletions

    首先如果第一个数字是0的话,那么先手必胜. 对于一个已知的先手必败状态,凡是能转移到先手必败的状态一定是必胜状态. 比如1是必败状态,那么2~9可以转移到1,所以是必胜状态. 10,10*,10**, ...

  5. Js内置对象的应用

    Boolean.Number.Objectfunction对象    另一种写法:        var add=new Function("x","y",&q ...

  6. 20160201.CCPP体系详解(0011天)

    内容概要:C语言基本数据类型及运算题库(含答案) 第二章 基本数据类型及运算 一.选择题 1. 若以下选项中的变量已正确定义,则正确的赋值语句是[C]. A) x1=26.8%3; B) 1+2=x2 ...

  7. python numpy argsort函数用法

    numpy.argsort numpy.argsort(a, axis=-1, kind='quicksort', order=None)[source] Returns the indices th ...

  8. 最全的PHP开发Android应用程序

    第一部分是指在Android系统的手机上直接写PHP脚本代码并立即运行: 第二部分则继续讲解如何把写好的PHP脚本代码打包成akp安装文件. 首先,在手机上安装两个apk包. 一个是SL4A(Scri ...

  9. Ajax请求内嵌套Ajax请求的方法

    前段时间做项目,需要把全国省市的两个XML文件整合成一个JSON格式的数据,手写的话觉得数据太多了,而且容易出错,于是就想到了用Ajax嵌套的方法来解决,就想平时用Ajax的方法直接嵌套,都会先读出外 ...

  10. JDBC用ResultSet访问大量数据时会遇到的问题

    我们经常需要JDBC来对数据库就行操作,一般流程为连接数据库.通过sql语句把需要的数据取出来保存到ResultSet,然后调用ResultSet方法的类似 getString,getInt()等方法 ...