威尼斯wns.9778官网活动_vnsc威尼斯城官网

热门关键词: 威尼斯wns.9778官网活动,vnsc威尼斯城官网
当前位置:威尼斯wns.9778官网活动 > 计算机教程 > 输出执行操作和打印日志的shell脚本实例

输出执行操作和打印日志的shell脚本实例

文章作者:计算机教程 上传时间:2019-05-11
cat /mnt/log_function.sh 
#!/bin/bash 
#log function

####log_correct函数打印正确的输出到日志文件 
function log_correct () { 
DATE=`date “ %Y-%m-%d %H:%M:%S”` ####显示打印日志的时间 
USER=$(whoami) ####那个用户在操作 

echo “${DATE} ${USER} execute $0 [INFO] $@” >>/var/log/log_info.log ######($0脚本本身,$@将参数作为整体传输调用) 
}

一、终端打印

[root@cai ~]# echo welcome to bash!

welcome to bash!

 

[cairui@cai ~]$ echo 'welcome to bash!'

welcome to bash!

 

[cairui@cai ~]$ echo "welcome to bash!"

welcome to bash!

(注意,双引号内不能直接用特殊符号,需要用转义符)

 

[cairui@cai ~]$ printf "hello world"

hello world

 

#!/bin/bash

#filename:printf.sh

 

printf  "%-5s %-10s %-4sn" no name mark

printf  "%-5s %-10s %-4.2fn" 1 sarath 80.3456

printf  "%-5s %-10s %-4.2fn" 2 james 90.9989

printf  "%-5s %-10s %-4.2fn" 3 jeff 77.564

得到如下结果

[cairui@cai shell]$ sh printf.sh

no    name       mark

1     sarath     80.35

2     james      91.00

3     jeff       77.56

 

1.工作原理

  %s ,%c,%d和%f都是格式替换符,其所对应的参数可以置于带引号的格式字符串之后。

  %-5s指明格式为左对齐且宽度为5的字符串替换,不够的用空格补上。

  对于%-4.2f,其中.2指定保留2个小数位。

2.补充内容

(1)在echo中转义换行符

[cairui@cai shell]$ echo -e "1t2t3"

1 2 3

(2)打印彩色输出

重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37

打印彩色文本

 

[cairui@cai shell]$ echo -e "e[1;31m this is red text e[0m"

 this is red text

 

设置彩色背景,重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47

 

 

log_error打印shell脚本中错误的输出到日志文件

二、玩转变量和环境变量

  在bash中,每一个变量的值都是字符串。无论你给变量赋值时有没有引号,值都是以字符串形式存在。有一些特殊的变量会被shell环境和操作系统环境用来存储一些特别的值,这类变量就称为环境变量。

Cat /proc/$PID/environ(查看运行时的环境变量)

例子:

[cairui@cai shell]$ pgrep mysql

11029

11313

[cairui@cai shell]$ sudo cat /proc/11313/environ

TERM=xtermOLDPWD=/application/mysqlPATH=/sbin:/usr/sbin:/bin:/usr/bin:/application/mysql/binPWD=/application/mysqlSHLVL=3MYSQL_HOME=/application/mysql_=/usr/bin/nohup

[cairui@cai shell]$ sudo cat /proc/11313/environ |tr '\0' 'n'

TERM=xterm

OLDPWD=/application/mysql

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/application/mysql/bin

PWD=/application/mysql

SHLVL=3

MYSQL_HOME=/application/mysql

_=/usr/bin/nohup

 

1.实战演练

 

[cairui@cai shell]$ var=value

[cairui@cai shell]$ echo $var

value

 

Variable.sh代码如下:

#!/bin/bash

fruit=apple

count=5

echo "we have $count $fruit(s)"

[cairui@cai shell]$ sh variable.sh

we have 5 apple(s)

 

Export命令就是用来设置环境变量:

[cairui@cai shell]$ echo $PATH

/application/mysql/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/application/xtrabackup/bin:/home/cairui/bin

[cairui@cai shell]$ export PATH="$PATH:/home/cairui"

[cairui@cai shell]$ echo $PATH

/application/mysql/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/application/xtrabackup/bin:/home/cairui/bin:/home/cairui

 

2.补充内容

length=${#var}

例如:

[cairui@cai shell]$ vai=1234567890

[cairui@cai shell]$ echo ${#vai}

10

 

function log_error () 
{ 
DATE=`date “ %Y-%m-%d %H:%M:%S”` 
USER=$(whoami) 
echo “${DATE} ${USER} execute $0 [INFO] $@” >>/var/log/log_error.log 
}

三、使用函数添加环境变量

  PATH=/usr/bin;/bin

这意味着只要shell需要执行二进制可执行文件时,它会首先查找/usr/bin,然后是/bin

 

###fn_log函数 通过if判断执行命令的操作是否正确,并打印出相应的操作输出

四、使用shell进行数学运算

  在bash shell环境中,可以利用let,[],(())执行基本的算术操作。而在进行高级操作时,expr和bc这两个工具也会非常有用。

1.实例

#!/bin/bash

#filename:jia.sh

no1=4;

no2=5;

let result=no1 no2

echo $result

[cairui@cai shell]$ sh jia.sh

9

自加操作

let no1

自减操作

let no1--

简写形式

let no =6

let no-=6

它们分别等于let no=no 6和let no=no-6

(2)bc是一个数学高级工具,这个精密计算器包含了大量的选项。

 

[root@cai ~]# echo "4*8"|bc

32

 

no=54

result=’echo “$no*1.5”|bc’

echo $result

81.0

l 设定小数精度。下面,参数scale=2将小数位个数设置为2.

[cairui@cai shell]$ echo "scale=2;3/8"|bc

.37

进制转换。用bc可以将一种进制系统转换为另一种。(10进制转换2进制)

#!/bin/bash

#用途:数字转换

 

no=100

echo "obase=2;$no" |bc

 

no=1100100

echo "obase=10;ibase=2;$no" |bc

[cairui@cai shell]$ sh shuzizhuanhuan.sh

1100100

100

l 计算平方及平方根

[cairui@cai shell]$ echo "sqrt(100)"|bc

10

 

[cairui@cai shell]$ echo "10^10"|bc

10000000000

 

function fn_log () 
{ 
if [ $? -eq 0 ] 
then 
log_correct “$@ sucessed!” 
echo -e “\033[32m $@ sucessed. \033[0m” 
else 
log_error “$@ failed!” 
echo -e “\033[41;37m $@ failed. \033[0m” 
exit 
fi 
}

五、玩转文件描述符及重定向

  文件描述符是与文件输入、输出相关联的整数。它们用来跟踪已打开的文件。最常见的文件描述符是stdin(标准输入)、stdout(标准输出)和stderr(标准错误)。

0-----stdin

1-----stdout

2-----stderr

1.实例

[cairui@cai shell]$ echo "this is a sample text " >temp.txt

[cairui@cai shell]$ cat temp.txt

this is a sample text

[cairui@cai shell]$ echo "this is a sample text " >>temp.txt

[cairui@cai shell]$ cat temp.txt

this is a sample text

this is a sample text

当命令出现错误时,错误信息就会被打印出来

 

[cairui@cai shell]$ ls

ls: cannot access : No such file or directory(错误信息)

 

2.工作原理

>等同于1>;对于>>也是等同于1>>

(1)将文件重定向到命令

cmd < file

(2)将脚本内部的文本块进行重定向

#!/bin/bash

cat<<EOF>log.txt

LOG FILE HEADER

this is a test log

function:system statistics

EOF

 

[cairui@cai shell]$ sh log-txt.sh

[cairui@cai shell]$ cat log.txt

LOG FILE HEADER

this is a test log

function:system statistics

 

知识点:

六、数组和关联数组

array_var=(1  2  3  4  5  6)#这些值将会存储在以0为起始索引的连续位置上

另外还可以将数组定义为一组“索引-值”

array_var[0]=”test1”

array_var[1]威尼斯wns.9778官网活动,=”test2”

......

......

......

......

array_var[5]=”test6”

 

echo $array_var[0]

test1

 

echo $array_var[*]

test1 test2 test3 test4 test5 test6

 

打印数组长度

echo ${#array_var[*]}

6

 

(1) $?判断执行命令的返回值,命令执行正确返回0,命令执行错误返回1

七、使用别名

(1)可以用以下方式创建一个别名

alias new_command=’command sequence’

(2)上述别名只是暂时的。为了使别名永久生效,可以将它放在~/.bashrc文件中

echo ‘alias cmd=”commadn seq”’ >> ~/.bashrc

(3)删除别名,只需要从~/.bashrc中删除就可以了

 

(2)”$@” 将执行命令 以一个参数的形式显示出来。

八、获取终端信息

  tput和stty是两款终端处理工具。

1.实例

l 获取终端的行数和列数:

tput cols

tput lines

l 打印当前终端名:

tput longname

l 将光标移动到坐标(100,100)处:

tput cup 100 100

l 设置终端背景色:

tputsetb n

其中,n可以在0到7之间取值

l 设置文本样式为粗体

tput bold

l 设置下划线的起止:

tput smu1

tput rmu1

l 删除从当前光标位置到行尾的所有内容:

tputed

l 在输入密码时,不应该显示输入内容:

#!/bin/bash

#filename:password.sh

echo -e “enter password:”

stty -echo

read password

stty echo

echo

echo password read

 

本文由威尼斯wns.9778官网活动发布于计算机教程,转载请注明出处:输出执行操作和打印日志的shell脚本实例

关键词: