shell编程之基础
1、初探shell
#!/bin/bash
echo -e 'hello \nworld'
执行结果

echo 是打印输出字符,-e选项是开启转义功能
注意:
在windows下编写的shell脚本直接拿到linux下是无法执行的,因为两个的行结束标志不同
- 直接将windows下的文件copy到linux,查看其格式

在图中的bash后面是一个回车,通过cat -A 来查看文件中所有字符时可看到这个回车是^M$
- 查看linux下的回车

两个的行结束标志不同,所以会导致shell脚本执行不成功
- 解决方式,通过dos2unix来进行格式转换

2.历史命令

- 执行history

想要执行哪条命令使用 !行号

甚至用!字符串,如!hist都可以执行该命令
3.输出重定向
cat hello.sh > he.sh将标准输出重定向到he.sh,先清空he.hs再将结果输出到he.sh
- cat hello.sh >> he.sh 以追加的方式输出到he.sh中
- cat hello.sh 2> he.sh 将标准出错输出到文件中
- cat hello.sh &> hello.sh 将正确和错误都写到文件中
- ls >> tfg 2>>efg 将命令的正确结果保存到tfg,将错误结果保存早efg中
4.shell中的通配符

特殊字符
‘bbb\nbbb$name’ 单引号中的字符都被认为是普通字符
“bbbb\nbbb$name” 双引号中的字符被赋予特殊含义,如\n表示转义,$name表示一个变量
$() 将会引用系统命令,如 echo $(date) 与 date的效果一样
5.shell中的变量
- 变量值的拼接
name = 123
name = ${name}456
这时name的值为123
- 接受用户向sh脚本中传递的值

一个简单的例子


这里进行了数字相加运算,两个变量在数值相加的时候必须使用$(())将其包起来
$* 与 $@
$*是将输入参数看成一个整体,像字符串;而$@将参数分开对待,就像一个数组


6、预定义变量


代码中的& 是让find命令在后台运行

shell编程之基础的更多相关文章
- Linux学习笔记(17) Shell编程之基础
1. 正则表达式 (1) 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式:通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find ...
- Shell编程菜鸟基础入门笔记
Shell编程基础入门 1.shell格式:例 shell脚本开发习惯 1.指定解释器 #!/bin/bash 2.脚本开头加版权等信息如:#DATE:时间,#author(作者)#mail: ...
- Shell编程入门基础上
前言 为什么学 Shell Shell 脚本语言是实现 Linux/UNIX 系统管理及自动化运维所必备的重要工具, Linux/UNIX 系统的底层及基础应用软件的核心大都涉及 Shell 脚本的内 ...
- shell编程awk基础介绍
awk介绍 报告生成器,格式化文本输出 处理机制类似sed命令,自带循环处理 读入一行处理一行然后自动读取下一行再进行处理 sed命令换行的标识是固定的,只能是回车换行. awk里面的换行 ...
- Shell编程-控制结构 | 基础篇
if-then-else分支结构 if-then-else是一种基于条件测试结果的流程控制结构.如果测试结果为真,则执行控制结构中相应的命令列表:否则将进行另外一个条件测试或者退出该控制结构. if- ...
- Shell编程——bash基础知识
# Bash中自动补全时忽略大小写 # 编辑~/.inputrc(没有的话,就新建一个),在最后加一行: set completion-ignore-case on # 若要用方向键Up,Down来搜 ...
- 第一部分shell编程1基础知识
ls etc/init.d/ shell脚本的路径 ls /usr/local/apache2/ ls /usr/local/apache2/bin/apachectl 1. shell特性命令历史 ...
- shell编程之基础知识1
1.shell脚本的基本格式 #!bin/bash ->看到这个就是shell脚本 #filename:test.sh ->脚本名称 #auto echo hello world -& ...
- Linux基础学习(11)--Shell编程
第十一章——Shell编程 一.基础正则表达式 1.正则表达式与通配符(*,?,[ ]): 2.基础正则表达式: 二.字符截取命令 1.cut字段提取命令: 空格分割时,不知道空格有多少个,无法分割行 ...
随机推荐
- poj 3237 Tree [LCA] (树链剖分)
poj 3237 tree inline : 1. inline 定义的类的内联函数,函数的代码被放入符号表中,在使用时直接进行替换,(像宏一样展开),没有了调用的开销,效率也很高. 2. 很明显,类 ...
- matlab里.*和*的区别
*:矩阵相乘 (cross) .*:矩阵你元素一对一相乘 (dot) 例子: >> a=[2 3];>> b=[4 5];>> a*b' ans = 23 > ...
- Linux shell get random number
the Shell Profile: When a new interactive shell is started, /etc/profile, followed by /etc/bash.bash ...
- Sample MultipleFileWordcount CombineFileInputFormat
在旧版本的samples中,使用的是旧的api,mapred下面的MultiFileInputFormat,现在已经过时. 现在推荐使用mapreduce下面的CombineInputFormat来处 ...
- c#分页读取GB文本文件
应用场景: a.我在做BI开发测试的时候,有可能面对source文件数GB的情况,如果使用一般的文本编辑器,则会卡死,或要等很久才能显示出来. b.有时候,我们使用ascii(01)或ascii(02 ...
- UESTC 917 方老师的分身IV --求欧拉路径
判断欧拉路径是否存在及求出字典序最小的欧拉路径问题(如果存在). 将字符串的第一个字母和最后一个字母间连边,将字母看成点,最多可能有26个点(a-z),如果有欧拉路径,还要判断是否有欧拉回路,如果有, ...
- MATLAB基本命令
eye(n)创建n阶单位矩阵 zeros(n)创建n阶0方阵 rand(m,n)创建m*n阶元素为从0到1的均匀分布的随机数矩阵 round(A)对矩阵A中所有元素进行四舍五入运算 A^-1用幂运算求 ...
- 第一次使用Android Studio时你应该知道的一切配置(二):新建一个属于自己的工程并安装Genymotion模拟器
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 深入.NET框架 项目《魔兽登录系统》
创建魔兽系统相关窗体: 登录窗体(frmLogin) 注册窗体(frmRegister) 主窗体 (frmMain) 实现魔兽登录系统: 登录的界面如下 实现思路: 1.创建一个对象数组,长度为1 ...
- 项目管理工具Redmine各功能测试
Redmine 是一个开源的.基于Web的项目管理和缺陷跟踪工具.它用日历和甘特图辅助项目及进度可视化显示.同时它又支持多项目管理.Redmine是一个自由开放 源码软件解决方案,它提供集成的项目 ...