shell-script簡稱shell(這裡專指的linux下的script)

關鍵字:test,if-else, fo-do-done,case

shell-script的應用非常廣泛,各種領域都有shell-script的應用,這裡我們主要講講日常應用。

關於執行,一般用source、 sh、  ./相對路徑/文件名、 /絕對路徑/文件名。這是一般常用的執行方式。

首先學習shell-script的test,主要檢測系統上面文件或者文件的屬性。具體test的測試標誌和代表的意義如下:

第一、關於文件類型的檢測。

-e:文件是否存在。

-f:文件存在是否為一般文件

-d:文件存在是否為目錄

-b:文件存在是否為塊設備(block device)

-c:文件存在是否為字符設備(character device)

-S:文件存在是否為Socket文件

-p:文件存在是否為FIFO(pipe)文件

-L:文件存在是否為一個連接文件(無論hard link or symbol link)

第二、關於文件的權限檢測。

-r:文件存在且具有可讀權限

-w:文件存在且具有可寫權限

-x:文件存在且具有可執行權限

-u:文件存在且具有SUID屬性

-g:文件存在且具有SGID屬性

-k:文件存在且具有Sticky bit屬性

-s:文件存在且為非空文件

第三、兩個文件的比較

-nt:(newer than)文件一比文件二新?

-ot:(older than)文件一比文件二舊?

-ef:文件一和文件二是否為同一文件,如hard link ,是否指向同一inode?

第四、整數的比較

-eq:值相等(equal)

-ne:值不等(not equal)

-gt:number1大於number2(greater than)

-lt:number1小於number2(less than)

-ge:number1大於等於number2(greater than or equal)

-le:number1小於等於number2(less than or equal)

第五、string的判斷

test -z string:string為0?空為true

test -n string:string為0?空為false

test str1=str2:str1等於str2,為true

test str1 != str2 :不等於,為true

第六、多重判斷(也可成為邏輯判斷)

-a:兩種狀況同時為true,則為true。eg:test -r file -a -x file,file既有可讀和可執行時,才為true。

-o:任意一條為true,則為true。eg:test -r file -a -x file,file可讀或者可執行時都為true,當file同時不可讀,不可執行時才為false。

!:邏輯非。

利用[]可以省略test,兩者的效果一樣。但是在shell-script中使用[]時,[]兩邊一定要使用空格。還有就是[]裏面的變量,最好都用雙引號括起來,變量用單引號和雙引號括起來都可以。這點很重要。

shell script 的default變量($0,$1,$2...),script內使用的特殊變量如下:

$#:表示後面的參數個數, $4代表$#是4。

$@:表示 "$1" "$2" "$3" ,每個變量是獨立的(用雙引號括起來)

$*:表示 "$1 $2 $3"。

其實$@和$*差不多,一般情況下直接使用或者記憶$@即可。

使script參數偏移的指令shift,在script中加入shift後會使script的參數偏移。。

下面學習if...then...fi,   if...then...else...fi,  if...then...elif...then... else...fi

使用if條件判斷時,條件判斷使用的邏輯運算&&(and)和||(or)相當於test中的-a和-o參數。

case...in...esac

function功能:function name(){ 程序 }

shell-script中的循環:有while...do...done, until...do...done(不定循環), while [ condition ] do programming done 當condition成立時開始循環,知道condition不成立終止循環,until [ condition ] do programming done, 當condition不成立時開始循環和while相反,指導condition成立時終止循環。

固定循環:for...do...done, for variable in val1 val2 val3 do programming done。  for的另一種用法和C語言一樣,for (( init val; end val; increment val))  do  programming  done。

經過兩天的完全學習,終於學習完shell-script了。還是重在實踐啊。。。

转载于:https://blog.51cto.com/ting2junshui/715655

shell-script(command groups)相关推荐

  1. Hadoop HDFS概念学习系列之熟练掌握HDFS的Shell访问(十五)

    调用文件系统(FS)Shell命令应使用 $HADOOP_HOME/bin/hadoop fs  *** 的形式!!! 所有的FS Shell命令使用URI路径作为参数. URI格式是scheme:/ ...

  2. 分享平时工作中那些给力的shell命令(更新版)

    分享平时工作中那些给力的shell命令(更新版) 分享平时工作中那些给力的shell命令---(Notice: 蓝色部分为在网友孤风颠影基础上新增加内容) 原帖地址为:http://yunhaozou ...

  3. 设计模式之-命令模式(Command Pattern)

    命令模式(Command Pattern)是用来实现在一个请求 - 响应模型松耦合.在命令模式中,请求被发送给调用者和调用它传递给被封装的命令对象. Command对象将请求传递到接收器的适当的方法来 ...

  4. 行为型设计模式(3)—— 命令模式(Command Pattern)

    文章目录 1.概述 2.命令模式简单实现 3.命令模式的应用场景和优缺点 4.小结 参考文献 1.概述 使用设计模式可以提高代码的可复用性.可扩充性和可维护性.命令模式(Command Pattern ...

  5. Hadoop中HDFS的Shell操作(开发重点)、启动Hadoop集群、基本语法、常用命令实操、命令大全、-help、-mkdir、-moveFromLocal、-copyFromLocal

    文章目录 6.HDFS的Shell操作(开发重点) 6.1基本语法 6.2命令大全 6.3常用命令实操 6.3.1准备工作 6.3.1.1启动Hadoop集群(方便后续的测试) 6.3.1.2-hel ...

  6. mac上编写运行shell script(shell脚本)

    shell的历史 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个 ...

  7. 一起学shell之(九-2)拼写检查、进程

    #----------------------------------------------------------# # ====> 红色字体 -特指煮酒个人所见.加粗则为需要重点注意. # ...

  8. Linux Bash Shell学习(十八):String I/O——echo和printf

    本文也即<Learning the bash Shell>3rd Edition的第七章Input/Output and Command-Line Processing之读书笔记之二. e ...

  9. 一些 Shell 脚本(持续更新)

    1. 启动日志分析 启动日志格式如下: 开机时间:2015/05/13 周三 16:45:17.79 关机时间:2015/05/13 周三 18:46:03.91 开机时间:2015/05/14 周四 ...

最新文章

  1. Microbiome:简单套路发高分文章--杨树内生和根际微生物组结构
  2. C标准库 limits.h
  3. Android 自定义AlertDialog,调用方法与系统一致
  4. anaconda写python代码视频_如何安装Python运行环境Anaconda?(视频教程)
  5. Shiro身份认证授权原理
  6. C/C++编程知识分享:C++ 手把手教你实现可变长的数组
  7. 创建font_使用CSS3 CubicBezier创建动画链接悬停效果
  8. hdu 3549 最大流(EK实现)
  9. 编译原理拉链回填技术c语言,编译原理 第1、2、3、4章复习(期末).doc
  10. 新开课day16正则表达式作业
  11. Android 查看应用MD5签名最简单的方法
  12. C++ primer 5th 习题之10.13
  13. 锚具ovm是什么意思_OVM锚具
  14. The word 'classpath' is not correctly spelled解决方法
  15. 高防服务器防御阈值买多大合适呢?
  16. iPad能用的c语言编译器,干货:苹果新iPad Pro的USB-C接口可以这么玩
  17. js写的中文数字转换成数字的一个小小的算法
  18. 攻防世界——web新手题
  19. 【共享经济】为什么共享衣橱用的是B2C而不是C2C模式?
  20. 重装系统后故障(报错:reboot and select proper boot deviceor insert boot media in selected boot device)

热门文章

  1. 使用LBP+SVM,训练识别给定的测试图像
  2. Web 服务器远程控制硬件(Arduino)
  3. html轮播文字上下轮播,js、jQuery实现文字上下无缝轮播、滚动效果
  4. eclipse中简单实现自己的工具类打包成jar包并在项目中使用
  5. android的颜色渐变动画效果图,Android简单实现一个颜色渐变的ProgressBar
  6. Linux系统--CentOS 7.6.1810 安装 fping 3.15
  7. html5上传使用FileReader,Promise图片预览
  8. HDU 1512 Monkey King(左偏堆)
  9. 【emWin】例程一:emWin系列教程简介
  10. openwrt gstreamer实例学习笔记(四. gstreamer Bins)