一直都在各种环境各种场合听人提起shell,因为不懂,所以总是一一略过,直到有一天,师兄跟我说,这个测试哪用自己跑,写个脚本就好。这时候我就想躲到角落默默画圈,师兄,我不是想自己跑,是我不懂写脚本。。。那时候,心里吹起一阵虐风,暗暗下定决心,某一天我得自己写个脚本,然后,故事就开始了。。。哈哈!
Shell环境能使用户与操作系统的核心功能进行交互,shell脚本是一些文件,把我们需要执行的一系列命令写入其中,然后通过shell来执行这些脚本。
Shell脚本是以*.sh作为文件结尾,文本开头是#!/bin/Bash,#!被置于解释器路径之前,/bin/Bash是bash的路径。将脚本作为命令行参数的运行方式如下:
$sh script.sh
$sh /home/path/script.sh
脚本作为sh的命令行参数来运行,那么脚本中的shebang行也就没有什么用处了。为了使shell脚本能够自己独立运行,需要具备可执行权限。要使脚本独立运行,必须使用shebang行。它通过使用位于#!之后的解释器来运行脚本,至于脚本的可执行权限可以通过以下方式来设置
$chmod a+x script.sh
$./script.sh
另一个注意点是,在Bash中,每个命令或者命令序列都是通过使用分号或者换行符来分隔的。
$cmd1
$cmd2
=$cmd1 ; cmd2
字符#指明注释开始的地方,bash不予以执行。
$echo “welcome to Bash”
$echo ‘welcome to Bash’
$echo welcome to Bash
无论是单引号,双引号还是没有引号,echo都能在终端打印文本,但是这三种方式各有副作用:
① 双引号:打印不出“!”
② 单引号:Bash不会对单引号中的变量求值,而只是照原样显示。
③ 没有引号:打印不处“;”,因为在Bash中,“;”代表另一条命令开始。
趣味echo-----彩色打印
我们可以使用echo命令行进行彩色打印,玩转终端显示界面。每种颜色都有对应的颜色号码,比如:重置0,黑色30,红色31,绿色32,黄色33,蓝色34,洋红35,青色36,白色37.
背景色的设置为重置0,黑色40,红色41,绿色42,黄色43,蓝色44,洋红45,青色46,白色47
$echo -e “\e[1;34m this is blue text ! \e[0m”其中34m是将文本设置为蓝色,0m是将文本重置。如果没有\e[0m,则终端显示就会变成蓝色。
$echo -e “\e[1;41m this is red background ! \e[0m”
pgrep可以用来查询进程的进程号。然后通过cat命令可以查看该进程相关的环境变量。
$pgrep gedit
$cat /proc/所获得的进程号/environ
由于环境变量通常有很长一串,所以我们可以使用下面命名进行环境变量的显示分隔。
$cat /proc/所获得的进程号/environ |tr ‘\n’
环境变量未在当前进程中定义,而是从父进程继承而来,则使用export命令来设置环境变量。
$echo $PATH
$export PATH=”$PATH:/home/usr/bin”
① 识别当前的shell版本
$echo SHELL
② 修改Bash提示字符串
$cat ~/.bashrc |grep PS1
PS1=’${debian_chroot:+{$debian_chroot}\u@\h:\w\$}’
\u代表用户名,\h代表主机名,\w代表当前工作目录
Let命令可以直接执行基本的算术操作。
$let result=a+b
$echo $result
Bc命令可以进行更加高级的运算。
$echo “4 * 1.5” | bc
$echo “scale=2;3/8” | bc #精确到小数点后两位
$echo “obase=2;100” | bc #将100转化为2进制
$echo “sqrt(100)” | bc #100开平方
$echo “10^2” | bc #10的乘方