为什么使用shell

可以快速、简单的完成编程,实现自己的想法。Shell非常适合编写小的工具,因为小工具更强调的是易于配置、维护、移植等,而不是执行效率。

当自己的想法确实有必要进行优化,有必要让它更容易修改以及修正设计目的时,可以将shell编写的工具重新用C、C++/python等语言重新实现。

常见的shell有bash/csh/sh等

管道和重定向

ls -al > lsoutput.txt #将ls命令输出的内容重定向到txt文件 在>前加数字 0 1 2 分别代表输入、标准输出、错误输出

参数2可以将错误输出到文件 而标准输出的内容将显示在屏幕上

>> #将输出添加到文件

丢弃不需要保存的输出的方法

Kill -l 1234 >/dev/null 2>&1 #将标准输出与错误输出都丢弃到系统垃圾箱

| 管道 用来连接进程 通过管道连接的进程可以同时运行,并自动协调数据流

 Ps > psout.txt   #输出ps内容到psout.txt
Sort psout.txt > psout.out #对psout.txt内容进行排序 输出到psout.out中

管道写法

 Ps | sort | pssort.out    #将ps内容排序后输出

自动搜索文件夹下 所有文件中包含的 某字符串

More $(grep -l POSIX *)    #在当前文件夹下的文件中  搜索POSIX字符串  打印出包含字符串的文件名

创建脚本

1.在脚本第一行添加 #!/bin/sh

2.把脚本设置为可执行 chmod +x 脚本文件名

3.设定脚本的权限

shell语法

1.变量 不需要提前申明,变量被用到时会自动创建,所有变量被看做字符串来存储 获取变量内容用$字符,

若字符串里包含空格,则需要使用括号将字符串括起来,此外,等号两边不能有空格

$() 或 $"" 用变量的值替换此处的内容 注意 $''不发生替换

2.环境变量&参数变量

$0   当前脚本的文件名

$n        传递给脚本的参数n,比如$1表示第一个参数

$#        传递给脚本或函数的参数个数。

$*,$@  传递给脚本或函数的所有参数

$?        上个命令的退出状态,或函数的返回值。

$$         当前Shell脚本所在的进程ID

$HOME 当前用户家目录

$PS1 给出当前用户名、机器名和当前目录名

$* 在一个变量中列出所有参数 参数间用IFS中第一个字符分隔开

$@ $*的变体 列出所有参数 与IFS无关 参数之间用空格分开

3.条件

test & [ 命令:shell布尔判断命令

检查一个文件是否存在

 if test -f fred.c
then

fi
#或者
if [ -f fred.c ]
then

Fi

4.控制结构

条件判断

 if condition
then
statements
else if condition; then
statements
else
statements
fi

循环语句

 for variable in values
do
statements done
exit while condition; do
statements done until condition
do
statements done #until与while的条件测试相反 case variable in
pattern [ | pattern] …) statements;;
pattern [ | pattern] …) statements;;

esac

命令列表

  • AND列表

    执行一系列命令,只有在前边所有命令都执行成功的情况下才执行后一条命令

    statement1 && statement2 && statement3 && …

    &&的作用是检查上一条语句的返回值

    AND列表是一系列命令作为一个整体,所有命令都执行,AND才算执行成功

  • OR列表

    执行一系列命令直到一条命令成功为止

函数

function_name (){

statements

}

函数定义需要放到调用之前

当一个函数被调用时,脚本程序的位置参数($*/$@/$#/$1/$2等)都会被替换为函数的参数,当函数执行完,这些参数将会恢复他们之前的值

shell学习-常用语句的更多相关文章

  1. Shell学习:if语句 if -z -n -f -eq -ne -lt

    if  条件then Commandelse Commandfi                              别忘了这个结尾 If语句忘了结尾fitest.sh: line 14: sy ...

  2. linux shell脚本常用语句

    linux shell 指令 诸如-d, -f, -e之类的判断表达式: 文件比较运算符-e filename  如果 filename存在,则为真  [ -e /var/log/syslog ]-d ...

  3. mysql学习一 常用语句

    操作系统为windows  1 启动关闭mysql服务 //windows mysqld --console //开启mysql服务 mysqladmin -uroot shutdown //关闭my ...

  4. Shell常用语句及结构

    条件判断语句之if if 语句通过关系运算符判断表达式的真假来决定执行哪个分支:shell有三种if语句样式,如下: 语句1 if [ expression ] then Statement(s) t ...

  5. 系统学习javaweb补充1----HTML常用语句

    HTML 常用语句 一.单行文本框语法格式 <input type="text" name="输入信息的名字" value="输入信息的值&qu ...

  6. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  7. [转帖][Bash Shell] Shell学习笔记

    [Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html  阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...

  8. shell学习笔记汇总

    1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...

  9. Shell 学习(三)

    目录 Shell 学习(三) 流程控制 1 if判断 2 case 语句 3 for循环 4 while 循环 2 read 读取控制台输入 2.1 基本语法 2.2 应用实例 3 函数 3.1 系统 ...

随机推荐

  1. Group_concat介绍与例子

    进公司做的第一个项目就是做一个订单追踪查询,里里外外连接了十一个表,作为公司菜鸡的我麻了爪. 其中有一个需求就是对于多行的数据在一行显示,原谅我才疏学浅 无奈下找到了项目组长  在那学来了这个利器 ( ...

  2. java面向接口编程之制定标准和简单工厂模式

    制定一个标准,让别人去实现或者说满足它! Eg: interface USB{//定义USB标准 void useUSB();//USB有使用USB的行为 } 简单工厂模式 构建一个工厂出来,在里面进 ...

  3. Vue中qs插件的使用

    qs 是一个增加了一些安全性的查询字符串解析和序列化字符串的库. 在项目中使用命令行工具输入:npm install qs安装完成后在需要用到的组件中:import qs from ‘qs’具体使用中 ...

  4. 2018百度之星初赛B - A,D,F

    总结:这一次的百度之星之行到这里也就结束了,充分的认识到了自己的不足啊...果然还是做的题太少,,见识的题型也还太少,对于STL的掌握还是不够到位啊!!(STL大法是真的好,建议大家认认真真的好好学学 ...

  5. H3C使用ping命令--用户视图

    完整的ping命令,用于下面参考 <H3C>ping 1.1.1.1   PING 1.1.1.1: 56  data bytes, press CTRL_C to break     R ...

  6. vue的filters过滤器的使用

    举个例子,过滤后台转过来的时间格式2019-08-29T02:15:08.000+0000转换为2019-08-29T02:15:08 html部分 <span v-if="item. ...

  7. Js中没有方法的重载

    <script type="text/javascript"> //方法名相同,后面的方法覆盖了前面的方法.后面的方法需要一个name,但没给传值,所以是undefin ...

  8. 【t044】弗洛伊德

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 弗洛伊德是一个大牛!给一个有向图G,他有n个结点,现在请你求出对于他的每一对结点(x,y),从x出发走 ...

  9. WPF 分页控件Pager

    本文为伪原创原文为 NET未来之路的https://www.cnblogs.com/lonelyxmas/p/10641255.html 原文中,页码数量会不断增加,会将下一页的按钮顶出去 修改了一下 ...

  10. Trie 树的一些题

    Trie 树的一些题 牛客练习赛11 假的字符串 (Trie树+拓扑找环) 链接:https://ac.nowcoder.com/acm/problem/15049 来源:牛客网 给定n个字符串,互不 ...