Xshell命令
一 概述:
shell 一种解释型的语言,同解释器翻译成计算机机器语言,与javascript ,python同属于解释型语言。
如此相对的 有java .C# 属于编译型的语言,java语言通过编译器编译成class 文件,在通过java虚拟机 (JVM)的处理编程机器识别的语言。
二 Shell解析器
- liunx解析器存放的目录如下:
/bin/sh bash的一个快捷方式
/bin/bash bash 是liunx下面大多数模式使用的shell
/bin/nologin 表示非交付,不能登录
/bin/dash 小巧高效,相对功能少一些
/bin/tcsh 具有C语言风格的一种shell ,特性多,缺陷不少
/bin/csh 是csh的增强版
- bash 和 shell的关系
bash 是 sh的一个软连接
3) CentOS 默认的解析器 是 bash
三shell的脚本入门
- 脚本的格式
以 #!/bin/bash 注明解析器
- 自己编写案例
:<<! 多行注释
DESC 创建人生中的一个shell脚本
ANTHOR 张洋
!
:<<EOF
CREATETIME: 2019-12-14 16:00:00
UPTETIME:
EOF
#!/bin/bash
rm -rf /root/class21/test.txt
mkdir /root/class21/test2
mkdir -p /root/class21/test2/dir{1..3} /root/class21/test2/dir6
touch /root/class21/test2/dir2/student.txt
echo "zhangsan" >> /root/class21/test2/dir2/student.txt
echo "创建时间:`date '+%Y-%m-%d %H:%M:%S'`"
- 脚本的执行方式
sh/bash 相对路径/绝对路径
第一种:采用bash或sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限)
[jinghang@hadoop101 datas]$ ./helloworld.sh
Helloworld
第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x,推荐采用这种方式)
chmod +x helloworld.sh
[jinghang@hadoop101 datas]$ /home/jinghang/datas/helloworld.sh
Helloworld
4)第二个Shell脚本:多命令处理
详情见自己编写的案例
四 shell中的变量
1)为什么要使用变量
1.如果某个内容需要多次使用,并且在代码中重复出现,那么可以使用变量代表该内容,
这样在修改内容的时候,仅仅需要修改变量的值。
2.在代码运作的过程中,可能会把某些命令的执行结果保存起来,后续代码需要使用这些结果,就可以直接使用这个变量。
2)常用的系统变量
$HOME
$USER
$SHELL
$PWD
$PATH
......
3)实操案例
(1)查看系统变量的值
[jinghang@hadoop101 datas]$ echo $HOME
/home/jinghang
(2)显示当前Shell中所有变量:set
[jinghang@hadoop101 datas]$ set
BASH=/bin/bash
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
- 自定义变量
int a = 1;
shell中的变量
a=1
#注意变量等号左右两边不要出现空格;变量名不要包含特殊字符;变量名称不能以数字开头
#作用域:只针对当前用户和当前会话有效
echo $a 或者 echo ${a} #读取变量
export b=2 #(全局环境变量)作用域:只针对当前会话的所有用户有效
创建系统的环境变量(作用域:只针对所有会话的所有用户有效)
1.vim /etc/profile
2.创建变量
export 变量名(大写)=变量的值
3.激活
source /etc/profile
取消变量
unset a
创建只读变量
readonly 变量名=值
- 特殊变量
1.$n
1.基本语法
$n (功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
2.案例实操
#!/bin/bash
:<<!
DESC 特殊字符的传参方式
ATHOR 张洋
CREATIME 2019-12-14 14:49:50
UPDATETIME
!
echo "$0 $1 $2 $3 "
echo $#
echo $@
echo $*
echo ""
echo $?
2.$#
1.基本语法
$# (功能描述:获取所有输入参数个数,常用于循环)。
2.案例实操
(1)获取输入参数的个数
#!/bin/bash
:<<!
DESC 特殊字符的传参方式
ATHOR 张洋
CREATIME 2019-12-14 14:49:50
UPDATETIME
!
echo "$0 $1 $2 $3 "
echo $#
echo $@
echo $*
echo ""
echo $?
- $* , $@
1.基本语法
$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
- 案例实操
#!/bin/bash
:<<!
DESC 特殊字符的传参方式
ATHOR 张洋
CREATIME 2019-12-14 14:49:50
UPDATETIME
!
echo "$0 $1 $2 $3 "
echo $#
echo $@
echo $*
echo ""
echo $?
4.$?
1.基本语法
$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
2.案例实操
#!/bin/bash
:<<!
DESC 特殊字符的传参方式
ATHOR 张洋
CREATIME 2019-12-14 14:49:50
UPDATETIME
!
echo "$0 $1 $2 $3 "
echo $#
echo $@
echo $*
echo ""
echo $?
- 简单总结
特殊变量 $n、$#、$*、$@、$?
#!/bin/bash
echo $0 $1 $2 $3 ${11}
echo $0 $1 $2 $3 ${11}
echo $#
echo $*
echo $@
echo $? 返回结果0:表示成功 1:表示失败