shell-script(command groups)
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)相关推荐
- Hadoop HDFS概念学习系列之熟练掌握HDFS的Shell访问(十五)
调用文件系统(FS)Shell命令应使用 $HADOOP_HOME/bin/hadoop fs *** 的形式!!! 所有的FS Shell命令使用URI路径作为参数. URI格式是scheme:/ ...
- 分享平时工作中那些给力的shell命令(更新版)
分享平时工作中那些给力的shell命令(更新版) 分享平时工作中那些给力的shell命令---(Notice: 蓝色部分为在网友孤风颠影基础上新增加内容) 原帖地址为:http://yunhaozou ...
- 设计模式之-命令模式(Command Pattern)
命令模式(Command Pattern)是用来实现在一个请求 - 响应模型松耦合.在命令模式中,请求被发送给调用者和调用它传递给被封装的命令对象. Command对象将请求传递到接收器的适当的方法来 ...
- 行为型设计模式(3)—— 命令模式(Command Pattern)
文章目录 1.概述 2.命令模式简单实现 3.命令模式的应用场景和优缺点 4.小结 参考文献 1.概述 使用设计模式可以提高代码的可复用性.可扩充性和可维护性.命令模式(Command Pattern ...
- 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 ...
- mac上编写运行shell script(shell脚本)
shell的历史 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个 ...
- 一起学shell之(九-2)拼写检查、进程
#----------------------------------------------------------# # ====> 红色字体 -特指煮酒个人所见.加粗则为需要重点注意. # ...
- Linux Bash Shell学习(十八):String I/O——echo和printf
本文也即<Learning the bash Shell>3rd Edition的第七章Input/Output and Command-Line Processing之读书笔记之二. e ...
- 一些 Shell 脚本(持续更新)
1. 启动日志分析 启动日志格式如下: 开机时间:2015/05/13 周三 16:45:17.79 关机时间:2015/05/13 周三 18:46:03.91 开机时间:2015/05/14 周四 ...
最新文章
- Microbiome:简单套路发高分文章--杨树内生和根际微生物组结构
- C标准库 limits.h
- Android 自定义AlertDialog,调用方法与系统一致
- anaconda写python代码视频_如何安装Python运行环境Anaconda?(视频教程)
- Shiro身份认证授权原理
- C/C++编程知识分享:C++ 手把手教你实现可变长的数组
- 创建font_使用CSS3 CubicBezier创建动画链接悬停效果
- hdu 3549 最大流(EK实现)
- 编译原理拉链回填技术c语言,编译原理 第1、2、3、4章复习(期末).doc
- 新开课day16正则表达式作业
- Android 查看应用MD5签名最简单的方法
- C++ primer 5th 习题之10.13
- 锚具ovm是什么意思_OVM锚具
- The word 'classpath' is not correctly spelled解决方法
- 高防服务器防御阈值买多大合适呢?
- iPad能用的c语言编译器,干货:苹果新iPad Pro的USB-C接口可以这么玩
- js写的中文数字转换成数字的一个小小的算法
- 攻防世界——web新手题
- 【共享经济】为什么共享衣橱用的是B2C而不是C2C模式?
- 重装系统后故障(报错:reboot and select proper boot deviceor insert boot media in selected boot device)
热门文章
- 使用LBP+SVM,训练识别给定的测试图像
- Web 服务器远程控制硬件(Arduino)
- html轮播文字上下轮播,js、jQuery实现文字上下无缝轮播、滚动效果
- eclipse中简单实现自己的工具类打包成jar包并在项目中使用
- android的颜色渐变动画效果图,Android简单实现一个颜色渐变的ProgressBar
- Linux系统--CentOS 7.6.1810 安装 fping 3.15
- html5上传使用FileReader,Promise图片预览
- HDU 1512 Monkey King(左偏堆)
- 【emWin】例程一:emWin系列教程简介
- openwrt gstreamer实例学习笔记(四. gstreamer Bins)