一脸懵逼学习Linux的Shell编程

1:什么是Shell???

(1)Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell
(2)Shell也是一门编程语言<解释型的编程语言>,即shell脚本
(3)一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的

2:Shell脚本的执行方式:

(1)第一种:输入脚本的绝对路径或相对路径
首先要赋予+x权限:[root@slaver7 test]# chmod +x ./hello.sh
    /root/helloWorld.sh
    ./helloWorld.sh

或者,不用赋予+x权限,而用解释器解释执行
sh  helloworld.sh

(2)第二种:bash或sh +脚本
    sh /root/helloWorld.sh
    sh helloWorld.sh

(3)第三种:在脚本的路径前再加". "
    . /root/helloWorld.sh
    . ./helloWorld.sh

注意:
区别:第一种和第二种会新开一个bash,不同bash中的变量无法共享

3:Shell中的变量:

Linux Shell中的变量分为“系统变量”和“用户自定义变量”,可以通过set命令查看那系统变量
系统变量:$HOME、$PWD、$SHELL、$USER等等

显示当前shell中所有变量  :    set

4:定义变量

(1)变量=值 (例如STR=abc)
(2)等号两侧不能有空格
(3)变量名称一般习惯为大写
(4)双引号和单引号有区别,双引号仅将空格脱意,单引号会将所有特殊字符脱意
(5)STR="hello world"
  A=9
  unset A 撤销变量 A
  readonly B=2 声明静态的变量 B=2 ,不能 unset
  export 变量名 可把变量提升为全局环境变量,可供其他shell程序使用

(6)将命令的返回值赋给变量

  A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A
  A=$(ls -la) 等价于反引号
(7)Shell中的特殊变量

  $? 表示上一个命令退出的状态
  $$ 表示当前进程编号
  $0 表示当前脚本名称
  $n 表示n位置的输入参数(n代表数字,n>=1)
  $#     表示参数的个数,常用于循环
  $*和$@ 都表示参数列表
(8)$*与$@区别
  $* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号" "包含时,都以$1  $2  … $n 的形式输出所有参数
  当它们被双引号" "包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数

5:运算符

格式 :expr m + n 或$((m+n)) 注意expr运算符间要有空格
例如计算(2 +3 )×4 的值
1 .分步计算

时间: 2024-08-01 13:17:46

一脸懵逼学习Linux的Shell编程的相关文章

Linux下Shell编程

Linux的shell编程  1.什么是shell? 当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shell(外壳)的程序. shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动.挂起.停止甚至是编写一些程序.一般的Linux系统都将bash作为默认的shell. 2.几种流行的shell 目前流行的shell有ash.bash.ksh.csh.zsh等,可以用下面的命令来查看sh

Linux下Shell编程快捷键大全(日常整理)_linux shell

有时候,我们需要在 Bash 中重复执行先前的命令.你当然可以使用上方向键来查看之前曾经运行过的命令.但这里有一些更好的方式,例如,数量掌握以下的快捷键. 1) !!:重复执行上一条指令 2) !a:重复执行上一条以a为首的指令 3) !number:重复执行上一条在history表中记录号码为number的指令 4) !-number:重复执行前第number条指令 5) !$:表示获得上一条命令中的最后一项内容 6) 用Ctrl + r 组合键来进入历史搜索模式在history表中查询某条过

[网摘学习]Shell脚本编程学习入门:Shell编程基础

51cto的这篇文章不错,收藏一下:http://os.51cto.com/art/201109/294521.htm(版权归原作者所有) Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):   #!/bin/sh ... 注意:最好使用"!/bin/bash"而不是"!/bin/sh",如果使用tc shell改为tcsh,其

linux shell-Linux shell 编程,能否像Java一样做单元测试

问题描述 Linux shell 编程,能否像Java一样做单元测试 现在正在做一个Linux shell项目,想问下各位大神,做Linux shell编程,能否做到像Java一样用Junit做单元测试? 有什么编程工具能与Eclipse类似吗? 解决方案 http://blog.163.com/njut_wangjian/blog/static/16579642520129269144664/ 解决方案二: 单元测试的话,还真没有遇到合适的.不过开发过程,可以使用sublime text这个软

一脸懵逼学习Hadoop中的序列化机制——流量求和统计MapReduce的程序开发案例——流量求和统计排序

一:序列化概念 序列化(Serialization)是指把结构化对象转化为字节流.反序列化(Deserialization)是序列化的逆过程.即把字节流转回结构化对象.Java序列化(java.io.Serializable) 二:Hadoop序列化的特点 (1):序列化格式特点: 紧凑:高效使用存储空间. 快速:读写数据的额外开销小. 可扩展:可透明地读取老格式的数据. 互操作:支持多语言的交互. (2):Hadoop的序列化格式:Writable接口 三:Hadoop序列化的作用: (1):

Linux服务器Shell编程学习笔记

Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):  代码如下 复制代码 #!/bin/sh ...注意:最好使用"!/bin/bash"而不是"!/bin/sh",如果使用tc shell改为tcsh,其他类似. 符号#!用来告诉系统执行该sell脚本的程序,本例使用/bin/sh.编辑结束并保存后,如果要执行该shell脚本

一脸懵逼学习MapReduce的原理和编程(Map局部处理,Reduce汇总)和MapReduce几种运行方式

1:MapReduce的概述: (1):MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题. (2):MapReduce由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce()两个函数,即可实现分布式计算,非常简单. (3):这两个函数的形参是key.value对,表示函数的输入信息. 2:MapReduce执行步骤: (1): map任务处理 (a):读取输入文件内容,解析成key.value对.对输入文件的每一行,解析

一脸懵逼学习Hadoop分布式集群HA模式部署(七台机器跑集群)

1)集群规划:主机名        IP      安装的软件                     运行的进程master    192.168.199.130   jdk.hadoop                     NameNode.DFSZKFailoverController(zkfc)slaver1    192.168.199.131    jdk.hadoop                       NameNode.DFSZKFailoverController(

一脸懵逼学习基于CentOs的Hadoop集群安装与配置(三台机器跑集群)

1:Hadoop分布式计算平台是由Apache软件基金会开发的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构.  注意:HADOOP的核心组件有: 1)HDFS(分布式文件系统) 2)YARN(运算资源调度系统) 3)MAPREDUCE(分布式运算编程框架)       Hadoop 中的分布式文件系统 HDFS 由一个管理结点 ( NameNode