鸟哥13章的东西

shell script速度较慢,适合用于系统管理,但不适合处理大量数值运算

var=$((运算内容)) 可以用来做变量的加减乘除求余运算

total=$(($firstnum*$secnu))

declare -i total="$firstnum*$secnu"

上面两句功能一样,建议用第一种

echo -e "\nYour full name is: $firstname $lastname"

-e表示后面 \表示转义,例子表示了在echo中显示两个变量的方法

file1=${filename}${date1}

一个变量是另两个变量的连接的写法

执行script

sh scriptname 在子进程中执行,变量不会出现在父进程

source scriptname 在父进程中执行,变量会出现在父进程

test :测试

test -e /test && echo "exist" || echo "Not exist"  测试文件名/test是否存在 目录文件都可以

test -f sh03.sh && echo "exist" || echo "Not exist" 测试文件是否存在 必须是文件

test -d abc && echo "exist" || echo "Not exist" 测试目录是否存在 必须是目录

下面代码测试文件是否存在 以及文件的执行权限

read -p "Please input a filename: " filename
test -z $filename && echo "You MUST input a filename." && exit
test ! -e $filename && echo "The filename '$filename' DO NOT exist" && exit
test -f $filename && filetype="regulare file"
test -d $filename && filetype="directory"
test -r $filename && perm="readable"
test -w $filename && perm="$perm writable"
test -x $filename && perm="$perm executable"
echo "The filename: $filename is a $filetype"
echo "And the permissions are: $perm"

[]: 表判断,但是挨着括号的两端必须都是空格

[ "$yn" == "Y" -o "$yn" == "y" ] && echo "OK, CONTINUE" && exit 0 判断yn等于Y或y,任意一个都返回true

脚本后面带参数:

$0 代码文件名 $1代码后面第一个参数  $2代码后面第二个参数....

$@ 代表除文件名之外的所有参数  $# 表后面接的参数个数

下面例子输入少于两个参数会退出 会显示所有参数和第一第二个参数

echo "The script name is --> $0"
echo "Total parameter number is --> $#"
[ "$#" -lt ] && echo "The number of parameter is less than 2. Stop here." && exit
echo "Your whole parameter is --> '$@'"
echo "The 1st parameter --> $1"
echo "The 2nd parameter --> $2"

shift num: 移除后面num个变量

条件判断式

if [] ; then

elif []; then

else

fi

if [ "$1" == "hello" ]; then
echo "Hello, how are you?"
elif [ "$1" == "" ]; then
echo "You Must input parameters, ex> {$0 someword}"
else
echo "The only parameter is 'hello', ex> {$0 hello}"
fi

netatat -tuln 获得目前主机启动的服务

80:www

22:ssh

21:ftp

25:mail

检测常见端口

echo "Now, I will detect your linux server's services!"
echo -e "The www, ftp, ssh and mail will be detect!\n" testing=$(netstat -tuln | grep ":80 ")
if [ "$testing" != "" ]; then
echo "WWW is running in your system."
fi testing=$(netstat -tuln | grep ":22 ")
if [ "$testing" != "" ]; then
echo "SSH is running in your system."
fi testing=$(netstat -tuln | grep ":21 ")
if [ "$testing" != "" ]; then
echo "FTP is running in your system."
fi testing=$(netstat -tuln | grep ":25 ")
if [ "$testing" != "" ]; then
echo "MAIL is running in your system."
fi

case 条件判断

case $变量名称 in
"第一个变量内容“
程序段
;;
"第二个变量内容“
程序段
;;
*)
    其他变量内容的程序段
   exit
;;

esac

函数:

function fname(){
  程序段
}    

后面接内置参数和shell的内置参数方法一样 也是$1 $2 ...

循环:

买足条件就循环

while [ condition ]
do
  程序段
done

满足条件就结束循环

until [ condition ]
do
  程序段
done

for循环

for var in con1 con2 con3 ...
do
  程序段
done
for ((初始值;限制值;执行步长))
do
  程序段
done

调试script

sh [-nvx] scriptname.sh

-n 不执行,仅检查语法

-v 执行前把script内容输出到屏幕

-x 将使用到的script内容输出到屏幕   debug很有用

【linux】学习6的更多相关文章

  1. Linux学习日记-使用EF6 Code First(四)

    一.在linux上使用EF 开发环境 VS2013+mono 3.10.0 +EF 6.1.0 先检测一下EF是不是6的 如果不是  请参阅 Linux学习日记-EF6的安装升级(三) 由于我的数据库 ...

  2. Linux学习之CentOS(二十二)--单用户模式下修改Root用户的密码

    在上一篇随笔里面详细讲解了Linux系统的启动过程 (Linux学习之CentOS(二十一)--Linux系统启动详解),我们知道Linux系统的启动级别一共有6种级别,通过 /etc/inittab ...

  3. Linux学习笔记之兄弟连

    systemctl --user enable pulseaudio说明:安装完成后系统没有声音,用该命令可以打开.ifconfig eth0 192.168.118.1说明:给网卡设置IP地址.ap ...

  4. Linux学习内容

    Linux学习要点(转载自红联) 一.学习Linux的基本要求1. 掌握至少50个以上的常用命令. 2. 熟悉Gnome/KDE等X-windows桌面环境操作 . 3. 掌握.tgz..rpm等软件 ...

  5. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  6. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

  7. Linux学习心得之 Linux下ant安装与使用

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下ant安装与使用 1. 前言2. ant安装3. 简单的a ...

  8. 实验楼 linux 学习

    实验楼 linux 学习     一.Linux 用户管理 1.查看用户 who am i // who mom likes whoami   ====--------====== 输入的第一列表示打 ...

  9. linux学习网站分享

    http://www.zhihu.com/question/19895288 http://linux.vbird.org/ 两个linux学习的网页存起来,以后学习.

  10. linux学习笔记2-linux的常用命令

    第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些常用的终端命令 ======== ...

随机推荐

  1. C#入门随手笔记

    1..Net Framework是Microsoft为开发应用程序而创建的一个开发平台. 运行操作系统不限:Microsoft版本运行在windows,Mono版本运行开Linux和MacOS: 应用 ...

  2. HPC Linux

    HPC也就是高性能计算,网格计算.服务器集群等前些日子听了Dr. Allen D. Malony讲座结束时得到两张光盘:一个HPC Linux的live cd,一个virtual box的ova镜像文 ...

  3. Linux之匹配符

    shell常见通配符: 字符 含义 实例 * 匹配 0 或多个字符 a*b  a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, axyzb, a012b, ab. ? 匹配任意 ...

  4. 多通道(Multichannel)单通道(singlechannel)图像概念梳理

    在做机器视觉时,常常要将一个多通道图像分离成几个单通道图像或者将几个单通道图像合成一个多通道图像,以方便图像处理,但是.写这篇博客,是为加深对这两个概念的理解,下面会给出部分OpenCV对单通道与多通 ...

  5. JavaScript深入浅出4-对象

    慕课网教程视频地址:Javascript深入浅出 对象的结构:包含一系列无序的属性,每个属性都有字符串key和对应的值 创建对象:对象字面量.new/原型链.Object.create 对象的属性操作 ...

  6. 高性能图片服务器–ZIMG

    2011年李彦宏在百度联盟峰会上就提到过互联网的读图时代已经到来1,图片服务早已成为一个互联网应用中占比很大的部分,对图片的处理能力也相应地变成企业和开发者的一项基本技能.需要处理海量图片的典型应用有 ...

  7. php使用文件缓存

    使用php读取mysql中的数据很简单,数据量不大的时候,mysql的性能还是不错的.但是有些查询可能比较耗时,这时可以把查询出的结果,缓存起来,减轻mysql的查询压力. 缓存的方法有几种:使用me ...

  8. Python自动化之IO多路复用

    单线程.多线程和异步对比图 灰色的是阻塞 IO多路复用 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心 ...

  9. 基于Selenium的模拟浏览器采集

    Selenium 也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7.8.9).Mozilla Firefox.Mozil ...

  10. python 端口扫描仪

    思路:使用socket进行连接测试,即客户端连接服务器. 核心代码如下: from socket import * def try_port(ip,port,protocol = SOCK_STREA ...