shell基础学习-难点重点学习
来自shell13问
-e : 啟用反斜線控制字符的轉換(參考下表)
-E:關閉反斜線控制字符的轉換(預設如此)
-n : 取消行末之換行符號(與 -e 選項下的 \c 字符同意)
要取消一個变量,在 bash 中可使用 unset 命令來处理:
代码:
unset A
for ep:a=bcd
echo $a
unset $a
变量设定方式 str没有设置 str已经设置不管是不是空字符串
var=${str=expr} str=expr str 不变
var=expr var=$str
var=${str:=expr}不管str有没有定义,都会被重新定义赋值
$# 是传给脚本的参数个数
$
0
是脚本本身的名字
$
1
是传递给该shell脚本的第一个参数
$
2
是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过
9
个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,
0
表示没有错误,其他表示有错误
於上兩個 echo 命令中,你會發現 argument 的部份顯示在你的熒幕, 而換行符
號則視 -n option 的有無而別。
很明顯的, 第二個 echo 由於換行符號被取消了,接下來的 shell prompt 就接在
輸出結果同一行了 ... ^_^
事實上, echo 除了 -n options 之外, 常用選項還有:
7
-e : 啟用反斜線控制字符的轉換(參考下表)
-E:關閉反斜線控制字符的轉換(預設如此)
-n : 取消行末之換行符號(與 -e 選項下的 \c 字符同意)
關於 echo 命令所支援的反斜線控制字符如下表:
\a: ALERT / BELL (從系統喇叭送出鈴聲)
\b: BACKSPACE ,也就是向左刪除鍵
\c: 取消行末之換行符號
\E: ESCAPE, 跳脫鍵
\f: FORMFEED,換頁字符
\n: NEWLINE,換行字符
\r: RETURN,回車鍵
\t: TAB, 表格跳位鍵
\v: VERTICAL TAB,垂直表格跳位鍵
\n: ASCII 八進位編碼(以 x 開首為十六進位)
\\: 反斜線本身
(表格資料來自 O'Reilly 出版社之 Learning the Bash Shell, 2nd Ed.)
整数条件表达式,大于,小于,shell里没有> 和< ,会被当作尖括号,只有-ge,-gt,-le,lt
g表示greator than
l表示lower than
for ep:if [100 ge $var];then
for ep:if [100 ge $var]
then
可以认真查看这两句之间的区别
1 #!/bin/bash
2 #name:01.sh
3 echo "print what you want:"
4 read var
5 if [ $var = "yes" ]; then//这个地方特别注意的是[]里面的字符必须和这个括弧存在空格
6 echo "you enter is $var\n"
7 else
8 echo "you have to kill youself"
9 fi
()与[]的区别
( ) 將 command group 置于 sub-shell 去执行,称为 nested sub-shell。
{ } 则是在同一个shell 內完成,也称为 non-named command group。
${ } 的一些特异功能:
假設我們定義了一個變量為:
file=/dir1/dir2/dir3/my.file.txt
我們可以用 ${ } 分別替換獲得不同的值:
${file#*/}: 拿掉第一條 / 及其左邊的字串: dir1/dir2/dir3/my.file.txt
${file##*/}: 拿掉最後一條 / 及其左邊的字串: my.file.txt
${file#*.}: 拿掉第一個 . 及其左邊的字串: file.txt
${file##*.}: 拿掉最後一個 . 及其左邊的字串: txt
${file%/*}: 拿掉最後條 / 及其右邊的字串: /dir1/dir2/dir3
${file%%/*}: 拿掉第一條 / 及其右邊的字串: (空值)
${file%.*}: 拿掉最後一個 . 及其右邊的字串: /dir1/dir2/dir3/my.file
${file%%.*}: 拿掉第一個 . 及其右邊的字串: /dir1/dir2/dir3/my
記憶的方法為:
# 是去掉左邊(在鑑盤上 # 在 $ 之左邊)
% 是去掉右邊(在鑑盤上 % 在 $ 之右邊)
${file:0:5}:提取最左邊的 5 個字?:/dir1
${file/dir/path}: 將第一個 dir 提換為 path: /path1/dir2/dir3/my.file.txt
${file//dir/path}: 將全部 dir 提換為 path: /path1/path2/path3/my.file.txt
一般而言, A="a b c def" 這樣的变量只是將 $A 替換為一個单一的字符串,
但是改為 A=(a b c def) , 則是將 $A 定义为数组...
接下來, 再為大家介稍一下 bash 的組數(array)處理方法。
一般而言, A="a b c def" 這樣的變量只是將 $A 替換為一個單一的字串,
但是改為 A=(a b c def) , 則是將 $A 定義為組數...
bash 的組數替換方法可參考如下方法:
${A[@]} 或 ${A[*]} 可得到 a b c def (全部組數)
${A[0]} 可得到 a (第一個組數), ${A[1]} 則為第二個組數...
${#A[@]} 或 ${#A[*]} 可得到 4 (全部組數數量)
$
{#A[0]} 可得到 1 (即第一個組數(a)的長度),
${A[3]} 可得到 3 (第一個組數
(def)的長度)//得到数组A[3]的值
A[3]=xyz 則是將第 4 個組數重新定义为 xyz
shell基础学习-难点重点学习的更多相关文章
- Shell基础学习小结
0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...
- Linux基础学习(10)--Shell基础
第十章——Shell基础 一.Shell概述 1.Shell是什么: (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来 ...
- 一次shell脚本小事故,从中学习排错过程-软件测试
一次shell脚本小事故,从中学习排错过程 事出,童鞋使用shell脚本搭建测试环境的过称中..... 配置环境变量文件:/etc/profile(用于升级JDK或其他) 手动编辑方法:vi /etc ...
- MySQL基础之事务编程学习笔记
MySQL基础之事务编程学习笔记 在学习<MySQL技术内幕:SQL编程>一书,并做了笔记.本博客内容是自己学了<MySQL技术内幕:SQL编程>事务编程一章之后,根据自己的理 ...
- 如何夯实(Java)编程基础,并深入学习和提高
如何夯实(Java)编程基础,并深入学习和提高? 240赞同反对,不会显示你的姓名 匿名用户 240 人赞同 多学习...网上自学的学习网站很多,见以下榜单~一.汇总榜单: 公开课_学习网站导航 收录 ...
- 零基础2018如何系统地学习python?
首先告诉你的是,零基础学习开始系统学习Python肯定难,Python的专业程度本身就不简单,学习这事本来就是一件非常煎熬的事情,人都不愿意学习,可是没办法,为了生存掌握一个技能,你必须学,如果你认真 ...
- 零基础快速入门web学习路线(含视频教程)
下面小编专门为广大web学习爱好者汇总了一条完整的自学线路:零基础快速入门web学习路线(含视频教程)(绝对纯干货)适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利 ...
- 20165312 C语言基础调查和JAVA学习展望
C语言基础调查和JAVA学习展望 一.有关学习技能的经历 掌握一项技能,我认为最重要的是练习和认真程度. 我在上幼儿园的时候学过电子琴,上台表演过多次,但是三四年之后就半途而废了,后来小学毕业之后对钢 ...
- 零基础的人怎么学习Java
编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...
随机推荐
- 第六章 设计程序架构 之 设计实现WebSocket策略
1. 概述 传统网页的通信方式是请求-响应模式,每次请求-响应都是新的连接.连接的建立和断开也是需要消耗资源的. WebSocket是基于TCP协议,实现单个连接上的双向通信. 本章内容包括: 异步读 ...
- 用java自带jdk开发第一个java程序
[学习笔记] 1.用java自带jdk开发第一个java程序: 下面要讲的eclipse要想正常工作,需要先学会配置这里的jdk.jdk要想正常工作,需先学会配置JAVA_HOME和ClassPa ...
- [转](不理想)Ubuntu下更改主显示器
参考链接:http://www.cnblogs.com/feng_013/archive/2012/03/05/2380111.html 查看显示器信息: fdm@fdm-OptiPlex-780:~ ...
- WPF MATERAIL DESIGN TOOKIT
最近有个程序需要用到WPF,本以为WEB可以做到很炫的,没有想到XAML也能做到如此之炫.心动了,那就行动吧. 搜到有各种款式的:METRO风格,RIBBON风格,MATERIAL风格…… 也许是玩W ...
- jquery中ajax请求后台数据成功后既不执行success也不执行error解决方法
jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Objec ...
- arcgis jsapi接口入门系列(1):地图
地图相关 //地图相关demo mapFun: function () { //获取地图中心点 let center = this.mapView.center; //地图中心点坐标(同地图坐标系) ...
- iOS上线check_list
iOS 上线前 check_list 类型 序号 检查项 结果(pass/no) 安装 卸载 1 非越狱环境下的安装.卸载 2 越狱环境下的安装.卸载 3 安装文件检查,无泄漏用户信息的隐患 4 卸载 ...
- LR中订单流程脚本
Action(){ /* 主流程:登录->下订单->支付订单->获取订单列表 定义事物 1)登录 2)下订单 3)支付订单 4)获取订单列表 接口为:application/json ...
- SQLServer同一实例下事务操作
参考代码: 引用Dapper public bool OrderAdd2(User user, Order order) { string dbString = ConfigurationManage ...
- SQL2005中使用backup、restore来备份和恢复数据库
在SQL2005数据库中利用SQL语句进行数据备份与还原: 备份backup:backup database 数据库名称 tO disk = 备份路径例:BACKUP DATABASE test TO ...