所有编程语言的学习都是这个几个步骤。
1、语言格式
2、变量的使用
3、输入输出
4、数组列表的使用
5、控制语句
6、函数体
7、一些其他组件的集成,第三方工具的使用。
Shell编程学习四这一章节就学习控制语句的使用。
一、流程控制,if else for 循环。
if then语句
if condition
then
command1
command2
...
commandN
fi
if else语句
if condition
then
command1
command2
...
commandN
else
command
fi
多个条件组合
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
实例:
a=10
b=20
if [ $a == $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
for循环语法结构:
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
实例:
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
实例:输出字符串中的字符
#!/bin/bash
for str in This is a string
do
echo $str
done
while无限循环
while true
do
command
done
跳出循环:
实例:
#!/bin/bash
while :
do
echo -n "输入 1 到 5 之间的数字:"
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
break
;;
esac
done
只跳出当前循环 用关键字 continue
#!/bin/bash
while :
do
echo -n "输入 1 到 5 之间的数字: "
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为 $aNum!"
;;
*) echo "你输入的数字不是 1 到 5 之间的!"
continue
echo "游戏结束"
;;
esac
done
函数和函数调用:
函数就是把已批量shell脚本命令放在一个函数体里,这样是为了方便模块化,编写复杂的shell程序脚本。
语法实例:
demoFun(){
echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"
有返回值的函数:
funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为 $aNum 和 $anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
linux常用命令:
关机:
shutdown-h now
立刻关机shutdown-h 3
3分钟后关机poweroff立刻关机
重启:
-
shutdown-r now
-
立刻重启shutdown-r 3
-
3分钟后重启reboot立刻重启
帮助命令:
--help命令shutdown --help:ifconfig --help:查看网卡信息
man命令(命令说明书) man shutdown注意:man shutdown打开命令说明书之后,使用按键q退出
目录切换:
cd / 切换到根目录cd /usr 切换到根目录下的usr目录cd ../ 切换到上一级目录 或者 cd ..cd ~ 切换到home目录cd - 切换到上次访问的目录
查看目录:
ls查看当前目录下的所有目录和文件ls-a 查看当前目录下的所有目录和文件(包括隐藏的文件)ls-l 或 ll 列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)ls/dir 查看指定目录下的所有目录和文件 如:ls /usr
创建目录:
mkdir mhyr 在当前目录下创建一个名为qq的目录mkdir /usr/mhyr在指定目录下创建一个名为qq的目录
删除目录或文件:
rm文件 删除当前目录下的文件rm-f 文件 删除当前目录的的文件(不询问)
全部删除:
rm -rf * 将当前目录下的所有目录和文件全部删除rm -rf /* 将根目录下的所有文件全部删除(慎用!)
目录修改:
mv当前目录 新目录例:mv bb aa 将目录bb改为aa
剪切目录:
命令:mv 目录名称 目录的新位置例:将/usr/lib目录下的qq目录剪切到/usr目录下面 mv /usr/lib/qq /usr
拷贝目录:
命令:cp -r 目录名称 目录拷贝的目标位置 -r代表递归例:将/usr/lib目录下的qq目录复制到 /usr目录下面 cp /usr/lib/qq /usr
搜索目录:
命令:find 目录 参数 文件名称例:查找/usr/lib目录下的所有以a开头的目录或文件find /usr/lib -name 'a*'
新建文件:
命令:touch 文件名例:在当前文件目录创建一个名为ai.exe文件 touchai.exe
删除文件:
命令:rm-rf 文件名例:删除ai.exe文件 rm-rfai.exe
修改文件:
命令:vi 文件名例:打开房钱目录下的qq.exe文件vi qq.exe或者 vim qq.exe
查看文件:
cat:看最后一屏例:使用cat查看/etc/sudo.conf文件,只能显示最后一屏内容catsudo.conf
more:百分比显示例:使用more查看/etc/sudo.conf文件,可以显示百分比,回车可以向下一行,空格可以向下一页,q可以退出查看more sudo.conf
less:翻页查看例:使用less查看/etc/sudo.conf文件,可以使用键盘上的PgUp和PgDn向上和向下翻页,q结束查看less sudo.conf
tail:指定行数或者动态查看例:使用tail-10 查看/etc/sudo.conf文件的后10行,Ctrl+C结束 tail-10 sudo.conf
打包或压缩文件:
Linux中的打包文件是:qq.tar
Linux中的压缩文件是:qq.gz
Linux中打包并压缩的文件是:.tar.gz
命令:tar -zcvf 打包压缩后的文件名 要打包的文件
z:调用gzip压缩命令进行压缩c:打包文件v:显示运行过程f:指定文件名
解压文件:
命令:tar[-zxvf] 压缩文件x代表解压
查找命令:
ps -ef | grep sshd 查找指定ssh服务进程 ps -ef | grep sshd | grep -v grep 查找指定服务进程,排除gerp身 ps -ef | grep sshd -c 查找指定进程个数
find . -name "*.conf" -ls 在当前目录查找以.conf结尾的文件,并显示详细信息。find /root/ -perm 500 查找/root/目录下权限为500的文件 find . -type f -name "*.txt" 查找当目录,以.txt结尾的普通文件 find . -type d | sort 查找当前所有目录并排序 find . -size +50M 查找当前目录大于50M的文件
查看当前目录:pwd
查看进程:ps -ef
结束进程:kill
ifconfig:查看网卡信息
ping:查看与某台机器的连接情况
netstat -an:查看当前系统端口
重启网络:
命令:service network restart