一、Shell变量 主要有本地变量和环境变量。
1、本地变量 -- 在用户现有运行的脚本中使用
1) 定义本地变量 格式: variable-name=value
例子:[root@jike1 /root]# LOCALTEST="test"
[root@jike1 /root]# echo $LOCALTEST (注意:echo $LOCALTEST 和 echo ${LOCALTEST}的效果是一样的)
(在变量名前加$, 可以取得此变量的值,使用echo命令可以显示变量的值)
2) 显示本地变量 格式: set
例子:[root@chinaitlab root]# set
3) 清除本地变量 格式:unset variable-name
例如:[root@jike1 /root]# unset LOCALTEST
此时再执行echo $LOCALTEST将看不到变量LOCALTEST的输出。
2、环境变量 -- 在所有的子进程中使用
1) 定义环境变量 格式: export variable-name=value (与本地变量的定义相比,多了一个export关键字)
例子:[root@chinaitlab /root]# export DOMAIN="chinaitlab.com"
[root@ chinaitlab shell]# vi testenv.sh
#!/bin/bash #表示用bash来解析脚本
#testenv.sh
echo $DOMAIN
[root@chinaitlab shell]# chmod +x testenv.sh
[root@chinaitlab shell]# ./testenv.sh
chinaitlab.com
2) 显示环境变量 格式: env (本地变量的显示使用set,环境变量的显示使用env)
例子: [root@chinaitlab test]# env
3) 清除环境变量 格式:unset variable-name (用法与本地变量相同,都使用unset)
例子: [root@chinaitlab shell]# unset DOMAIN
此时再执行./testenv.sh将看不到变量DOMAIN的输出。
3、其它变量
1) 位置变量 $0,$1,$2,$3……$9
2) 只读变量 readonly variable
注意:只读变量不能被清除和改变其值,所以要谨慎使用。
3) 特殊变量 $#,$?,
(表示当前进程的PID)……
二、运算符和表达式
1、运算符是对计算机发的指令,运算符类型有:
算术运算符(+、-、*、/)
按位运算符(~、>、&、|、^)
逻辑运算符(&&、||、 > 、= = 、>=)
2、表达式是运算符和运算对象的组合体。
1) $[]:可以接受不同基数的数字的表达式
echo $[10+1] (输出:11)
echo "$[2+3],$HOME" (输出:5,/root)
echo $[2>1] (输出:16,4)
echo $[2>3],$[3>2] (输出:0,1 表达式为false时输出0,为true时输出1)
2) 字符表达式:直接书写,采用单引号,双引号引起来。
echo " $HOME,That is your root directory." (输出:/root,That is your root directory.)
echo ' $HOME,That is your root directory. ' (输出:$HOME,That is your root directory.)
单引号和双引号的区别在于:单引号是原样显示,双引号则显示出变量的值。
3) test表达式
三、控制结构
1、if语句
例: #!/bin/bash
#if.sh
if [ "10" -lt "12" ] #注意:if和[之间,[和"10"之间,"12"和]都有空格,如果不加空格,会出现语法错误
then
echo "Yes,10 is less than 12"
fi
2、case语句
例: #!/bin/bash
#case.sh
echo -n "Enter a start or stop:"
read ANS
case $ANS in
start)
echo "You select start"
;;
stop)
echo "You select stop"
;;
*)
echo "`basename $0`: You select is not between start and stop" >&2
#注意:>和&2之间没有空格,>&2 表示将显示输出到标准输出(一般是屏幕)上
exit;
;;
esac
3、for循环语句
格式: for 变量名 in 列表
do
命令1
命令2
... ...
done
4、until循环语句
格式: until 条件
do
命令1
命令2
... ...
done
5、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 > /tmp/a.txt (将输出的结果重写到a.txt这个文件中)
ls -l >> /tmp/a.txt (将输出的结果追加到a.txt这个文件中,常用于记录日志)
6) 标准输入( $0 )、标准输出( $1 )和标准错误( $2 )
采用文件描述符($0、$1、$2)来定义。
2、实例:readme.sh
#!/bin/bash
#readname.sh
echo -n "First Name: "
read firstname
echo -n "Last Name: "
read lastname subname
echo -e "Your First Name is :${firstname}\n " #加了-e表示将\n解析为转义字符
echo -e "Your Last Name is :${lastname}\n "
echo -e "Your Subname is :${subname}\n "
echo "Your First Name is :${firstname}\n " >>firstname.txt #这行没加-e,因此在输出中会原样显示\n
echo "Your Last Name is :${lastname}\n " >lastname.txt
echo "Your Subname is :${subname}\n " >&1
五、文本过滤
1、正则表达式 (就是模式匹配)
2、find (查找文件)
例:find ./ -name "*.txt" -print
3、grep (查找字符)
例:grep "[5-8][6-9][0-3]" access_log
4、awk (把一系列数据分域,即分成列)
例:awk '{print $1"\t"$4}' access_log
5、sed (对数据进行查找和替换)
例:sed -n 's/chinaitlab/hello/p' myfile.txt (将myfile.txt文件中的chinaitlab替换成hello,并打印到屏幕上来,s表示替换,p表示打印。如果加上重定向符就可以将替换后的 内容输出到一个文件中去。)
6、sort (排序)
例:sort ip.txt
7、uniq (显示这一列是唯一的还是不唯一的,可以唯一化)
例:uniq ip.txt
8、split (可以对文件进行分割)
例:split myfile.txt
9、实例:kill_process.sh
#!/bin/bash
#kill_process.sh
current_PID=
ps -aux|grep "/usr/sbin/sshd"|grep -v "grep"|awk '{print $2}'>/tmp/${current_PID}.txt
for pid in `cat /tmp/${current_PID}.txt`
do
{
echo "kill -9 $pid"
kill -9 $pid
}
done
rm -f /tmp/${current_PID}.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中的函数,相当于其它语言中的include
function hello ()
{
echo "Hello,$1 today is `date`"
}
echo "now going to the function hello"
hello chinaitlab
echo "back from the function"
相关推荐
shell编程入门经典--LINUX与UNIX Shell编程指南 (中文pdf版)
Linux下shell编程入门编程,内有详细例子,入门学习最佳选择。
1Linux下Shell编程入门及变量讲解.mp4 2Linux下Shell编程入门及变量讲解.mp4 3Shell编程企业实战菜单系列.mp4 4Shell编程企业实战菜单系列.mp4 5Linux下LAMP实战及脚本编程思路讲解.mp4 6Linux下LAMP实战及脚本编程...
shell编程入门教程+shell脚本专家指南+UNIX.shell编程24小时教程
Linux Shell编程从入门到精通.张昊.pdf Linux Shell编程从入门到精通.张昊.pdf
1.Linux下Shell编程基础入门.mp4 2.Shell编程之变量及LAMP导航菜单编写.mp4 3.Shell编程之IF条件语句各种案例演练.mp4 4.使用if条件语句编写MySQL备份脚本.mp4 5.Shell编程之LAMP一键安装脚本实战.mp4 6.For循环及...
linux Shell编程入门 实例讲解详解
Linux下的shell编程入门.pdf
这是WINDOWS SHELL编程学习资料,很齐全的教程哦。
Linux系统下的shell编程入门篇,真的很不错,很好
详细介绍了shell编程的各部分内容,配以大量简单详细实例,让你用最少的时间达到shell编程从入门到精通的过程,无疑是学习shell编程的最佳选择~
linux Shell编程入门 实例讲解详解.doc
《linux shell编程从入门到精通》由浅入深、循序渐进地详细讲解了linux shell编程的基本知识。这些基本知识包括shell编程的基本知识、文本处理的工具和方法、正则表达式、linux系统知识等。 《linux shell编程从...
第四部分 基础shell编程 第16章 shell脚本介绍 151 16.1 使用shell脚本的原因 151 16.2 脚本内容 151 16.3 运行一段脚本 152 16.4 小结 153 第17章 条件测试 154 17.1 测试文件状态 154 17.2 测试时使用逻辑操作符 ...
实验四 Linux Shell编程入门 通过实验掌握下列知识: 1、了解Linux下Bash Shell脚本编写的基本要求; 2、了解Bash Shell几种常用的控制结构; 3、能按要求编写简单的Bash Shell脚本;
本书由浅入深、循序渐进地详细讲解了LinuxShell编程的基本知识。这些基本知识包括Shell编程的基本知识、文本处理的工具和方法、正则表达式、Linux系统知识等。 本书旨在通过理清Linux Shell编程的脉络,从基本概念...
linux shell 编程入门 指南 pdf文字版
Shell编程详解,shell入门,shell实例
在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。 Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin...
包括概述、linux文件系统、正则表达式、sed命令和awk编程、文件的排序、合并和分割、变量和引用、操作符、循环与结构化命令、变量的该机用法、I/O...函数、别名、列表和数组、shell脚本调试技术、bash shell编程范例等...