Shell编程指南

基础知识

shell执行方式   sh xx.sh (文件须有r权限)  ||  ./xx.sh (文件须有x权限) 注:sh xx.sh方式比较安全
文件名后缀 .sh
shell内容开头 #!/bin/bash || #!/bin/sh || #!/bin/csh || #!/bin/ksh 注:#!/bin/bash 使用比较多
退出  exit 0

变量赋值与使用

不需要定义即可直接使用  注:变量赋值时=号两端不能有空格
以$变量名或${变量名}访问变量内容

流程控制

判断  注:确保方括号的空格 ; 确定每个条件都有then

代码如下:

if [ –d ‘dirname' ];then
    命令集1
elif 条件2;then
    命令集2
else
     命令集4
fi

代码如下:

case $变量 in
match_1 )
        命令集1
        ;;
match_2)
        命令集2
        ;;
……
*)(可选)
        命令集n
        ;;
esac

循环

1.while 条件

代码如下:

do

//TODO

done

2.until 条件

代码如下:

do
    命令集
done

3.for ((初始值;条件;步进))

代码如下:

do
    命令集
done

4.for 循环变量 in 变量列表

代码如下:

do
    命令集
done

常用判断条件语句

判断文件类型

测试标志    语义    举例
-e    “文件或目录”是否存在    test –e $file_name
-f    “文件或目录”是否存在且为文件    test –f $file_name
-d    “文件或目录”是否存在且为目录    test –d “/boot”
-b    “文件或目录”存在且为块设备    test –b “/dev/sda1”
-c    “文件或目录”存在且为字设备    test –c “/dev/tty0”
-S    “文件或目录”存在且为Socket文件    test –S “/var/run/rpcbind.sock”
-p    “文件或目录”存在且为FIFO文件    test –p $file_name
-L    “文件或目录”存在且为链接文件    test –L $file_name

判断文件权限

测试标志    语义
-r    “文件或目录”是否存在且具有可读权限
-w    “文件或目录”是否存在且具有可写权限
-x    “文件或目录”是否存在且具有可执行权限
-u    “文件或目录”存在且具有SUID的属性
-g    “文件或目录”存在且具有SGID的属性
-k    “文件或目录”存在且具有Sticky bit的属性
-s    “文件或目录”存在且为非空文件

文件之间比较

测试标志    语义
-nt    “文件名1”是否比”文件名2”新 (newer than)
-ot    “文件名1”是否比”文件名2”旧(older than)
-ef    判断”文件名1”和”文件名2”是否为同一个文件,主要用来判断硬链接,即两个文件是否指向同一个inode节点

整数之间比较

测试标志    语义
-eq    两数相等(equal)
-ne    两数不等(not equal)
-gt    整数1大于整数2(greater than)
-lt    整数1小于整数2(less than)
-ge    整数1大于等于整数2(greater than or equal)
-le    整数1小于等于整数2(less than or equal)

与、或、非
测试标志    语义
-a    (and) 两个条件同时成立则返回true  test –e file1 –a –d file2
-o    (or)两个条件任意一个成立则返回true  test –r file1 –o –x file2
!    (非)当前条件取非  test ! –d file1

控制结构

计算整数变量值

expr  注: 运算符号和参数之间要有空格分开;通配符号(*),在作为乘法运算符时要用\;
let 例子:let s=(2+3)*4

(0)

相关推荐

  • PowerShell编程中的一些命名规则参考

    本文介绍PowerShell自定义函数在使用时的最佳实践(Best Practices).包括函数名的命名.可选参数.必选参数等. PowerShell中的函数定义可以很简单的使用一个"function <函数名>{函数体}"的形式去定义.但微软推荐创建函数时遵循以下实践规则. 1.函数名. 使用cmdlet的统一命令规则,即"动词-名词"的形式.如Write-Host,表示输出到主机.如果是获取一个列表,不要使用List作为动词,建议使用Get,如Ge

  • 深入浅出Shell编程 Shell变量介绍

    •深入浅出Shell编程: Shell 变量 ◦1 系统变量 ◦2 Shell用户变量 ■2.1 基础 ■2.2 使用技巧 ■2.3 shell 中的数组 ◦3 shell 环境变量 先不要管Shell的版本,来看看Shell 变量,在Shell中有三种变量:系统变量,环境变量,用户变量.其中用户变量在编程过程中使用最多,系统变量在对参数判断和命令返回值判断会使用,环境变量主要是在程序运行的时候需要设置. 1 系统变量 Shell常用的系统变量并不多,但却十分有用,特别是在做一些参数检测的时候.

  • shell编程基础知识小结

    1.文件类型介绍linux系统中主要包括以下七种文件类型: d 目录 - 普通文件 l 符号链接 s 套接字文件 b 块设备文件 c 字符设备文件 p 命名管道文件 2.正则表达式正则表达式在shell编程中非常重要. 从一个文件或命令输出中抽取或过滤文本时.可使用正则表达式(RE),正则表达式是一些特殊或不很特殊的字符串模式的集合. 基本的元字符集:^ 只匹配行首.$ 只匹配行尾.* 一个单字符后紧跟*,匹配0个或多个此单字符.[] 匹配[]内字符,可以是一个单字符,也可以是字符序列.可以使用

  • shell编程基础 单引号和双引号的区别

    下面用一个简单的shell程序要说明一下. debian:~/learn/shell# cat phonebook Alice Chebba 973-555-2015 Barbara Swingle 201-555-9257 Liz Stachiw 212-555-2298 Susan Goldberg 201-555-7776 Susan Topple 212-555-4932 Tony Iannino 973-555-1295 Stromboli Pizza 973-555-9478 deb

  • shift妙用之解决shell编程中的入参问题

    我说过了,shell是我的常规武器,目前虽然还不纯熟,但是我爱shell这门语言,在Linux下面混,总要写脚本.程序员是有基因,对编程语言是有偏好的,你让我写C代码,我会觉得很爽,会有困难,会有痛苦的摸索和学习,但是,我愿意:学习shell/python,我也很乐意,甚至Lisp这种冷门的语言我也充满了好奇,虽然现在Go和Erlang我一点也不懂,但是我按耐不住对这两种语言的兴趣,只要我抽出手来,一定会和他们缠绵一番.有爱就会有恨,我痛苦地意识到到自己是个很情绪化的程序员,哪怕我一遍遍地骂自己

  • 利用shell编程实现DOS风格的Linux命令行

    如果你是习惯于Windows命令提示符的IT人,当你第一次使用Linux命令行时,一定会感到无所适从.你所熟悉的DOS命令再Linux中基本不存在.摆在你面前的是一大堆要记背的命令. 一种替代方案是利用强大的Linux外壳命令编写shell脚本,让你在Linux下也能用DOS命令.下面告诉你怎么做. shell脚本编写基础    从定时备份到执行简单命令,Linux的shell脚本可以执行各种功能.几乎所有的程序都可以用shell脚本来运行.在脚本中甚至可以包含一些简单的条件选择.shell脚本

  • Shell编程的一些知识集合

    下午在写程序的时候需要将shell命令返回的数值赋予给某变量,使用了a=$()的方法 soft=$(grep -i "\(Software \)Token/Passcode/." 123.txt |wc -l) echo "[+] 软卡总数:" $soft ...... #!shell下的运算 over=$((var-use)) echo "[+] 剩余硬卡:" $over Shell的嵌入命令 : 空,永远返回为true . 从当前shell中

  • 分享shell编程中的几个小技巧

    1.打印一些头信息command  <<  dilimiter----dilimiter 以分界符号dilimiter中的内容作为命令的标准输入常用在echo命令中,这样就避免了没输出一行就要使用一个echo命令,同时,输出格式的调整也相应变得简单了.例如:  echo << something_message**********************hello, welcome to use my shell script **********************somet

  • Shell编程之Shell变量学习总结

    一.变量操作 A.变量显示.打印语法:echo $varB.变量设置语法:var=value 变量的设置规则:1.变量两端不能直接接空格符2.变量名称只能是因为字母与数字,但开头不能使数字3.双引号内的特殊字符如$等,保持原本特性 复制代码 代码如下: [root@bogon ~]# var="lang is $LANG"[root@bogon ~]# echo %varroot@bogon ~]# echo $varlang is zh_CN.UTF-8 1. 单引号内的特殊字符则仅

  • shell编程之实现windows回收站功能分享

    一. 功能简介1. 将删除的文件放在回收站中2. 恢复删除的文件3. 实现linux rm命令的功能, 使用起来几乎和linux 系统自带的rm ,命令完全一样4. 新增功能: rm -l, rm -e, rm -c5. 该脚本每次在运行时候会检查$HOME/.trash 目录下文件大小之和, 若 超过最大容量, 脚本会自动将日志文件中所记录文件中的前一半文件从回 收站中清除,所以建议删除大文件(相对于回收站最大容量而言)直接用 命令/bin/rm 而不要用 rm. 二. 使用方法:1. 将tr

  • shell编程基础之认识与学习BASH

    1.认识Bash 通过Shell将输入的指令与Kernel沟通,让Kernel控制硬件工作查看Shell:cat /etc/shell登录后预设的shell类型记录在/etc/passwd中,与账户相关命令别名:alias lm='ls -al' #注意有无空格帮助:man bash命令类型:type 复制代码 代码如下: type ls # ls is aliased to `ls –color=auto'type cat # cat is hashed (/bin/cat)type cd #

  • 让代码整洁、过程清晰的BASH Shell编程技巧

    这是我写BASH程序的招式.这里本没有什么新的内容,但是从我的经验来看,人们爱滥用BASH.他们忽略了计算机科学,而从他们的程序中创造的是"大泥球"(译注:指架构不清晰的软件系统). 在此我告诉你方法,以保护你的程序免于障碍,并保持代码的整洁. 一.不可改变的全局变量 1.尽量少用全局变量 2.以大写命名 3.只读声明 4.用全局变量来代替隐晦的$0,$1等 在我的程序中常使用的全局变量: 复制代码 代码如下: readonly PROGNAME=$(basename $0) read

随机推荐