shell概述:这里说的是命令行shell,例如"bash/sh/ksh/csh"(Unix/Linux系统)、cmd.exe命令提示字符(windwos系统),这里主要介绍Unix/Linux系统。
shell不但可以命令手机,还可以用来编程。运维人员可以通过shell来自动化管理系统,Linux系统所有命令都可以被shell调用。
1.脚本调用方式
./*.sh #要求有执行权限,必须声明shell类型(#!/bin/sh) sh *.sh #使用sh执行脚本 sh -x *.sh #sh -x 表示显示执行过程
2.变量
使用>写第一个脚本 cat > hello.sh echo "Hello World!" #ctrl + D结束 chmod +x hello.sh #使用上面三种方法来执行脚本 接下来在终端上使用即可 1.定义变量 a1="Hello World" a2=`date "+%Y-%m-%d %H-%M-%S"` 2.获取变量并输出 第一种: echo $a1 #echo ${a1} >>Hello World echo $a2 >>2018-01-02 23-40-57 第二种:切片取值 echo ${a1:0:2} #变量都是从0开始,第二个为1,0为开始位,展示两位,也就是Hl >>He #如果是echo ${a1:0}则打印0包括后面全部的值 第三种:组合 echo $a1,$a2 >>Hello World,2018-01-02 23-40-57 3.删除变量 unset 变量名 unset a1
3.read命令
read命令接收标准输入(键盘)的输入,得到输入后,read命令将数据放入一个标准变量中 cat test.sh #!/bin/bash echo -n "Enter your name:" #-n表示不换行,echo默认会换行 read name #变量 echo "Hello $name" #显示输入的信息 exit 0 #退出 #read有一个-p参数,后面可以跟提示信息,就跟echo一样,这样就可以简写 read -p "Enter your name:" name echo "Hello $name"
4.sort命令
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。 cat test.txt b b d f a c sort test.txt a b b c d e f #-u选项,输出时去掉重复行 sort -u test.txt a b c d e f #-r,选项,降序,默认是升序 sort -r test.txt f e d c b b a #-o选项,sort默认是把结果输出到标准实处,需要用重定向才能写入文件,例如sort test.txt > test2.txt,但是,要把结果输出到源文件中,就不行了,原文件会空,-o可以完美解决 sort -r test.txt -o test.txt cat test.txt f e d c b a #-n选项,有时候会遇到10比2大的情况,sort会比较字符,1比2小,所以放在2前面,-n可以避免 cat test.txt 1 2 3 4 10 sort test.txt 1 10 2 3 4 sort -n test.txt 1 2 3 4 10 #-t和-k选项 有个文件 cat a.txt a.9.2 d.7.3 c.5.1 现在我要根据第二列的数字来排序,如何做到?可以使用-k和-t sort -n -k 2 -t . a.txt #-k选择第几列-t选择分隔符,这里是. c.5.1 d.7.3 a.9.2