1、一、Shell 变量 主要有本地变量和环境变量。1、本地变量 在用户现有运行的脚本中使用1) 定义本地变量 格式: variable-name=value 例子:rootjike1 /root# LOCALTEST=“test“ rootjike1 /root# echo $LOCALTEST (注意:echo $LOCALTEST 和 echo $LOCALTEST的效果是一样的)(在变量名前加$, 可以取得此变量的值,使用 echo 命令可以显示变量的值)2) 显示本地变量 格式: set 例子:rootchinaitlab root# set3) 清除本地变量 格式:unset vari
2、able-name 例如:rootjike1 /root# unset LOCALTEST此时再执行 echo $LOCALTEST 将看不到变量 LOCALTEST 的输出。2、环境变量 在所有的子进程中使用1) 定义环境变量 格式: export variable-name=value (与本地变量的定义相比,多了一个 export 关键字)例子:rootchinaitlab /root# export DOMAIN=““ root chinaitlab shell# vi testenv.sh#!/bin/bash #表示用 bash 来解析脚本#testenv.shecho $DOMA
3、INrootchinaitlab shell# chmod +x testenv.shrootchinaitlab shell# ./testenv.sh 2) 显示环境变量 格式: env (本地变量的显示使用 set,环境变量的显示使用 env)例子: rootchinaitlab test# env3) 清除环境变量 格式:unset variable-name (用法与本地变量相同,都使用 unset)例子: rootchinaitlab shell# unset DOMAIN此时再执行./testenv.sh 将看不到变量 DOMAIN 的输出。 3、其它变量1) 位置变量 $0,$
4、1,$2,$3$92) 只读变量 readonly variable 注意:只读变量不能被清除和改变其值,所以要谨慎使用。3) 特殊变量 $#,$?,$(表示当前进程的 PID)二、运算符和表达式1、运算符是对计算机发的指令,运算符类型有:算术运算符(+、-、* 、/) 按位运算符(、 、;stop)echo “You select stop“;*)echo “basename $0: You select is not between start and stop“ ;esac3、for 循环语句格式: for 变量名 in 列表do命令 1命令 2. .done4、until 循环语句格式
5、: until 条件do命令 1命令 2. .done5、while 循环语句格式: while 命令 do 命令 1 break 命令 2 continue 命令 3 . .done 四、输入输出1、几个重要的工具1) echo例:echo -n “Enter a number from 1 to 2:“ (-n 表示不换行,此时光标停留在行尾)2) read例:read ANS (表示将用户的输入存放到变量 ANS 中)3) cat (显示文件内容)4) 管道( | ) (一个程序的输出作为另一个程序的输入)例:ls -l | grep “d“5) 文件重定向( 和 )例:ls -l /t
6、mp/a.txt (将输出的结果重写到 a.txt 这个文件中)ls -l /tmp/a.txt (将输出的结果追加到 a.txt 这个文件中,常用于记录日志)6) 标准输入( $0 )、标准输出( $1 )和标准错误( $2 )采用文件描述符($0、$1、$2)来定义。2、实例:readme.sh#!/bin/bash#readname.shecho -n “First Name: “ read firstnameecho -n “Last Name: “ read lastname subnameecho -e “Your First Name is :$firstnamen “ #加了-
7、e 表示将n 解析为转义字符echo -e “Your Last Name is :$lastnamen “ echo -e “Your Subname is :$subnamen “echo “Your First Name is :$firstnamen “ firstname.txt #这行没加-e ,因此在输出中会原样显示necho “Your Last Name is :$lastnamen “ lastname.txtecho “Your Subname is :$subnamen “ &1五、文本过滤1、正则表达式 (就是模式匹配)2、find (查找文件)例:find ./ -
8、name “*.txt“ -print3、grep (查找字符)例:grep “5-86-90-3“ access_log4、awk (把一系列数据分域,即分成列)例:awk print $1“t“$4 access_log5、sed (对数据进行查找和替换)例:sed -n s/chinaitlab/hello/p myfile.txt (将 myfile.txt 文件中的 chinaitlab 替换成 hello,并打印到屏幕上来,s 表示替换,p 表示打印。如果加上重定向符就可以将替换后的内容输出到一个文件中去。)6、sort (排序)例:sort ip.txt7、uniq (显示这一列
9、是唯一的还是不唯一的,可以唯一化)例:uniq ip.txt8、split (可以对文件进行分割)例:split myfile.txt9、实例:kill_process.sh#!/bin/bash#kill_process.shcurrent_PID=$ps -aux|grep “/usr/sbin/sshd“|grep -v “grep“|awk print $2/tmp/$current_PID.txtfor pid in cat /tmp/$current_PID.txtdoecho “kill -9 $pid“kill -9 $piddonerm -f /tmp/$current_PI
10、D.txt六、Shell 函数1、定义函数有两种格式,分别为: 函数名() 命令 1 . . function 函数名() . . 2、实例:func.sh#!/bin/bash #func.sh # Source function library. # /etc/rc.d/init.d/functions 中存放了大量已经写好的函数 . /etc/rc.d/init.d/functions # 引入/etc/rc.d/init.d/functions 中的函数,相当于其它语言中的 includefunction hello () echo “Hello,$1 today is date“ echo “now going to the function hello“ hello chinaitlab echo “back from the function“
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。