1、介绍shell
1.SHELL语言是指UNIX操做系统的命令语言,同时又是该命令语言的解释程序的简称。
2.Shell自己是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工做都是经过Shell完成的。
3.Shell既是一种命令语言,又是一种程序设计语言。做为命令语言,它交互式地解释和执行用户输入的命令;
4.做为程序设计语言,它定义了各类变量和参数,并提供了许多在高级语言中才具备的控制结构,包括循环和分支。
5.它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、
6.创建文件并以并行的方式协调各个程序的运行。
7.所以,对于用户来讲,shell是最重要的实用程序,
8.深刻了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键。
2、shell能作什么?算法
(2)执行2:sh 1111.shshell
(3)执行3: . 1111.sh编程
(4)执行4: source 1111.sh安全
(5)比较四种方式的所在位置:
区别:1和2的方式,是子shell 3和4的方式,是本shellbash
(6):shell解释器有哪些
:shell 命令就是前一阶段所学习的大部分命令。 cp ls date组合到一块儿。ide
Linux支持的shell有哪些呢?
cat /etc/shells
或
chsh -l工具
4、变量类型:
1.自定义变量:
特性:1. 自定义变量(示例:ping01.sh引入变量)
定义变量: 变量名=变量值 变量名必须以字母或下划线开头,区分大小写 ip1=192.168.2.115
引用变量: $变量名 或 ${变量名}
查看变量: echo $变量名; "set"能够查看全部变量(包括自定义变量和环境变量)
取消变量: unset 变量名
做用范围: 仅在当前shell中有效
2.实例:使用变量前。麻烦
ping -c1 10.8.162.120 &>/dev/null && echo 10.8.162.120up || echo 10.8.162.120.10down学习
(1)使用后简洁:
测试
(2)测试:
操作系统
2.变量赋值(定义变量):
(1) 显式赋值
变量名=变量值
示例:
ip=192.168.1.251
school="BeiJing 1000phone"
today1=date +%F
today2=$(date +%F)(2)read 从键盘读入变量值:
read -p "请输入您测试的IP地址:" ip
测试:(3):定义或引用变量时注意事项:
" " 弱引用 //脱去空格
' ' 强引用 //脱去全部字符意思//优先执行 :命令替换 等价于 $() 反引号中的shell命令会被先执行
另外一种用法: touch $(date +%F)_file2.txt
2.环境变量:环境变量
定义环境变量: 方法一 export back_dir2=/home/backup
方法二 export back_dir1 将自定义变量转换成环境变量
引用环境变量: $变量名 或 ${变量名}
查看环境变量: echo $变量名 env 例如env |grep back_dir2
取消环境变量: unset 变量名
变量做用范围: 在当前shell和子shell有效 !!!!!!!!!!!!!!!!!!!!!!!
使变量开机、登录生效,将变量放到~/.bash_profile
(1)语法:预先定义过的变量
$0 脚本名
$* 全部的参数
$@ 全部的参数
$# 参数的个数
$$ 当前进程的PID
$! 上一个后台进程的PID
$? 上一个命令的返回值 0表示成功
(2)实例1:
实验: ./ tst.sh 1 2 3 4 5 6
4.$和$@区别(资料):
shell中$与$@的区别
关于$* 和 $@的 一点 认识 同是菜鸟一块儿学习
$
全部的位置参数,被做为一个单词.
注意:"$"必须被""引用.br/>$@
与$*同义,可是每一个参数都是一个独立的""引用字串,这就意味着参数被完整地传递,
并无被解释和扩展.这也意味着,每一个参数列表中的每一个参数都被当成一个独立的
单词.
注意:"$@"必须被引用.
$@ $ 只在被双引号包起来的时候才会有差别
双引号括起来的状况:
$将全部的参数认为是一个字段
$@以IFS(默认为空格)来划分字段,若是空格在“”里面,不划分。采用LS的脚本运行./test 1 "2 3" 4 来发现差别
没有括起来的状况是$@和$*同样的,见到IFS就划分字段。仍是采用LS的脚本运行./test 1 "2 3" 4 来发现差别
一个小例子 ,仅供参考
[Copy to clipboard] [ - ]CODE:#!/bin/bash
echo
index=1
echo "Listing args with\"\$\":"
for arg in "$"
do
echo "Arg #$index=$arg"
let "index+=1"
done
echo "全部的参数被认为是一个单词"
echo
index=1
echo "Listing args with \"\$@\":"
for arg in "$@"
do
echo "Arg #$index=$arg"
let "index+=1"
done
echo "全部的参数被认为是各个独立的单词"
echo
index=1
5、变量的运算
(1) expr用法:方法一、
(2)方法二:$(())
(3)方法三:$[]
(4)方法四:let
2.小数运算:
须要用到工具 bc 至关于一个计算器
yum -y install bc
(1)小数运算,用bc和不用bc的区别
直接输入bc的用法 :
(2)在shell命令上直接用bcscale=2 保留小数点后面两位bc:交互运算器