Linux的shell编程(一)-shell介绍、运行环境和运行方式、shell的变量

Linux的shell编程(一)

一、shell介绍:

  • shell是一个用C语言编写的程序,它被称为用户使用linux的桥梁。
  • Shell既是一种命令语言,又是一种程序设计语言。
  • Shell 脚本(shell script),是一种为shell编写的脚本程序。

二、shell运行环境和运行方式

  • 1、shell编程和java、php等一样。只需要一个文本编辑器和解释工具即可。

    linux的shell太多,常见的有:
    Bourne Shell (/usr/bin/sh或/bin/sh) 在linux下:/bin/sh
    Bourne Again Shell(/bin/bash) 在linux下:/bin/bash
    C Shell(/usr/bin/csh)   在linux下:/bin/tcsh            
    K Shell(/usr/bin/ksh)	是c shell的超集。
    Shell for Root(/sbin/sh)
    其中linux自带有:/bin/bash 、 /bin/sh 、/bin/tcsh。以上的集中都是交互式。
    
    bash易用和免费。Bash在日常工作中被广泛使用。
    bash也是大多数Linux系统默认的Shell。
    
    #!/bin/sh等价于#!/bin/bash
    
    • 一个hello world实例:
    #vi /home/shell/first.sh
    #!/bin/bash
    echo "Hello World"
    
    • 说明:#!/bin/bash 是一种约定的标记,它告诉系统该脚本用什么解释器执行,即是那一类脚本。
    • 注释:除(#!/bin/bash)这个#号不是注释外,其余几乎都是注释。
  • 2、运行方式:

    • a、可执行权限运行:
    chmod a+x /home/shell/first.sh  #使脚本具有执行权限
    /home/shell/first.sh  #执行脚本
    
    • b、加解释器运行:
    /bin/bash /home/shell/first.sh
    不用赋予脚本执行权限;
    不用再脚本第一行加#!/bin/bash,加咯也是外面的生效。
    

三、shell的变量

  • 1、变量定义

    • 定义变量时,变量名不加美元符号($,PHP语言中变量需要)如:
    name="1511A"
    
    • 注意:
      变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
    首个字符必须为字母(a-z,A-Z)。
    中间不能有空格,可以使用下划线(_)。
    不能使用标点符号。
    不能使用bash里的关键字(可用help命令查看保留关键字,set查找出来也不用)
  • 2、变量的赋值:

    • 显式地直接赋值(可以重复为变量赋值):
    name="你好"
    
    • 用语句给变量赋值,如:
    name=`expr 2 + 2`
    以上语句将 2 + 2的值给变量 
    注意其中的空格,必须要有
    
  • 3、使用变量(linux中的使用变量必须加$)

使用一个定义过的变量,只要在变量名前面加美元符号即可,如:
echo $name
echo ${name}
变量名外面的花括号是可选的,加不加都行。
加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:
name="1511A"
echo "beicai$name班"
  • 4、只读变量
    使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
    下面的例子尝试更改只读变量,结果报错:
#!/bin/bash
name="1511A"
readonly name
name="haha"
运行脚本,结果如下:
./readonly: line 4: name: readonly variable。
  • 5、删除变量
    使用 unset 命令可以删除变量。语法:
unset variable_name
变量被删除后不能再次使用。unset 命令不能删除只读变量。

实例:

#!/bin/bash
name="1511A"
unset name
echo $name
以上实例执行将没有任何输出。
  • 6、变量类型:(局部变量(常用)、环境变量)
    运行shell时,会同时存在三种变量:
      1. 局部变量 该称为自定义变量。局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
      1. 环境变量, 该也称为系统变量。所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
    可使用set命令查看:
    [root@hadoop01 hadoop]# set
    BASH=/bin/bash
    BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
    BASH_ALIASES=()
    BASH_ARGC=()
    BASH_ARGV=()
    ..........
    

你可能感兴趣的:(Linux,大数据)