概述:
- Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
- Shell还是一个功能相当强大的编程语言,易编 写、易调试、灵活性强。Shell是解释执行的脚本语言,在Shell中可以调用Linux系统命令。
shell脚本的执行方式
- echo输出命令
基本语法:echo [选项] [输出内容]
- 选项
-e:支持反斜线控制的字符转换
- 案例
[atguigu@hadoop102 sbin]$ echo "helloworld"
helloworld
- 第一个Shell脚本
<-- 需求:创建一个Shell脚本,输出helloworld -->
[atguigu@hadoop102 datas]$ touch helloworld.sh
[atguigu@hadoop102 datas]$ vi helloworld.sh
<-- 在helloworld.sh中输入如下内容 -->
#!/bin/bash
echo "helloworld"
-
脚本的常用执行方式
-
第一种:输入脚本的绝对路径或相对路径
<-- 首先要赋予helloworld.sh 脚本的+x权限 -->
[atguigu@hadoop102 datas]$ chmod 777 helloworld.sh
<-- 执行脚本 -->
/root/helloWorld.sh
./helloWorld.sh
- 第二种:bash或sh+脚本(不用赋予脚本+x权限)
sh /root/helloWorld.sh
sh helloWorld.sh
shell中的变量
- Linux Shell中的变量分为“系统变量”和“用户自定义变量”,可以通过set命令查看系统变量。
- 系统变量:
$HOME
、$PWD
、$SHELL
、$USER
等等 - 显示当前shell中所有变量:set
定义变量
- 基本语法:
变量=值
- 变量定义规则
-
变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
-
等号两侧不能有空格
-
变量名称一般习惯为大写
-
双引号和单引号有区别,双引号仅将空格脱意,单引号会将所有特殊字符脱意
- 案例
- 定义变量A:
A=8
- 撤销变量A:
unset A
- 声明静态的变量B=2,不能unset:
readonly B=2
- 可把变量提升为全局环境变量,可供其他shell程序使用:
export 变量名
将命令的返回值赋给变量
-
A=ls -la
:反引号,运行里面的命令,并把结果返回给变量A -
A=$(ls -la)
:等价于反引号
设置环境变量
- 基本语法:
export 变量名=变量值:(功能描述:设置环境变量的值)
echo $变量名:(功能描述:查询环境变量的值)
source 配置文件:(功能描述:让修改后的配置信息立即生效)
- 案例:
<-- 在/etc/profile文件中定义JAVA_HOME环境变量 -->
export JAVA_HOME=/opt/module/jdk1.7.0_79
export PATH=$PATH:$JAVA_HOME/bin
- 查看环境变量JAVA_HOME的值
[atguigu@hadoop102 datas]$ echo $JAVA_HOME
/opt/module/jdk1.7.0_79
位置参数变量
-
基本语法
$n
:(功能描述:n为数字,$0代表命令本身,$1- 9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如 9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如{10})$*
:(功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)$@
:(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)$#
:(功能描述:这个变量代表命令行中所有参数的个数) -
案例
<-- 计算输入的参数1和参数2的两个数的和,并输出到控制台 -->
#!/bin/bash
num1=$1
num2=$2
sum=$(( $num1 + $num2))
#变量sum的和是num1加num2
echo $sum
#打印变量sum的值