shell学习-常用语句

为什么使用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 #将标准输出与错误输出都丢弃到系统垃圾箱

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

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

管道写法

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

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

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

创建脚本

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

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

3.设定脚本的权限

shell语法

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

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

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

2.环境变量&参数变量

$0   当前脚本的文件名

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

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

$*,[email protected]  传递给脚本或函数的所有参数

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

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

$HOME 当前用户家目录

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

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

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

3.条件

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

检查一个文件是否存在

1 if test -f fred.c
2 then
3 …
4 fi
5 #或者
6 if [ -f fred.c ]
7 then
8 …
9 Fi

4.控制结构

条件判断

1 if condition
2 then
3 statements
4 else if condition; then
5 statements
6 else
7 statements
8 fi

循环语句

 1 for variable in values
 2 do
 3     statements
 4
 5 done
 6 exit 0
 7
 8
 9 while condition; do
10     statements
11
12 done
13
14
15 until condition
16 do
17     statements
18
19 done
20
21 #until与while的条件测试相反
22
23 case variable in
24     pattern [ | pattern] …) statements;;
25     pattern [ | pattern] …) statements;;
26     …
27 esac

命令列表

  • AND列表

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

    statement1 && statement2 && statement3 && …

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

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

  • OR列表

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

函数

function_name (){

statements

}

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

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

原文地址:https://www.cnblogs.com/Mrwang-tju/p/12192279.html

时间: 2024-10-13 10:44:36

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

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

if  条件then Commandelse Commandfi                              别忘了这个结尾 If语句忘了结尾fitest.sh: line 14: syntax error: unexpected end of fi if 的三种条件表达式 ifcommandthen if 函数then  命令执行成功,等于返回0 (比如grep ,找到匹配)执行失败,返回非0 (grep,没找到匹配) if [ expression_r_r_r  ]then 

linux shell脚本常用语句

linux shell 指令 诸如-d, -f, -e之类的判断表达式: 文件比较运算符-e filename  如果 filename存在,则为真  [ -e /var/log/syslog ]-d filename  如果 filename为目录,则为真  [ -d /tmp/mydir ]-f filename  如果 filename为常规文件,则为真  [ -f /usr/bin/grep ]-L filename  如果 filename为符号链接,则为真  [ -L /usr/bi

shell学习之for循环语句【初学者】

前言:日常系统管理工作中有大量需要重复运行的指令,shell编程提供了for.while.until.select循环语句以实现特定指令的反复执行功能,在所有的循环语句中,变量必须要有初始值,每次运行命令序列前都需要对条件进行过滤,满足条件才会运行命令,否则不执行相关操作.下面介绍的就是for循环语句的两种语法格式. for 循环每次处理依次列表内信息,直至循环耗尽.相对于while.until的循环方式是必须符合某个条件的状态,for这种语法是已经知道要进行几次循环的状态. 语法格式1: fo

关于黑客,你了解多少?----黑客入门学习(常用术语+DOS操作)

关于黑客,你了解多少?----黑客入门学习(常用术语+DOS操作) ·1.1·前言 黑客一次是由英语"Hacker"英译出来的,是指专门研究.发现计算机和网络漏洞的计算机爱好者,他们伴随着计算机和网络的发展而产生成长.黑客对计算机有着狂热的兴趣和执着的追求,他们不断的研究计算机和网络知识,发现计算机和网络中存在的漏洞,喜欢挑战高难度的网络系统并从中找到漏洞,然后向管理员提出解决和修补漏洞的方法. 黑客的出现推动了计算机和网络的发展与完善.他们所做的不是恶意破坏,他们是一群纵横于网络的大

shell中常用的特殊符号

在shell中常用的特殊符号罗列如下: # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# [email protected] `command`{} [] [[]] () (()) || && {xx,yy,zz,...}~ ~+ ~- & \<...\> + - %= == != # 井号 (comments) 注释字符 该句不会被执行 ~ 帐户的 home 目录 用户的

shell学习之tr命令

tr命令不接受指定的文件参数,而只是对标准输入进行翻译, tr是translate的简写,亦即翻译,需要注意的是,它不能翻译句子,只能翻译单个字符. 首先,定义变量:     [[email protected]]#A=1,,2,,,3,,,4,,,5 下面以示例对该命令以及其常用选项进行介绍. 示例: 1.  无选项设置情况     [[email protected]]# echo $A | tr  ',' ' '         1 2   3   4   5     [[email pr

【转】十分有用的linux shell学习总结

在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们 数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux Shell的系列博客就给予了我极大的帮助,然而在实际的使用中却发现,有的时候确实忘记了某个技术点或某个Shell命令的使用方式曾经在哪一篇博客中 予以了说明,所以不得不多次点击多篇博客,直到找到想要那篇的为止,鉴于此,为了方便我们每个人的查阅,这里特别给出了前十二篇系列博客的目录以供大家参 阅和查

(九)shell中case语句、程序传参、while

2.2.6.1.case语句(1)shell中的case语句和C语言中的switch case语句作用一样,格式有差异(2)shell中的case语句天生没有break,也不需要break,和C语言中的switch case不同.shell中的case默认就是匹配上哪个执行哪个,不会说执行完了还去执行后面的其他case(就好像shell中的case语言默认都带了break). 2.2.6.2.调用shell程序的传参(1)C语言中可以通过main函数的argc和argv给程序传参(详情参考<4.

[Shell]if 常用判断条件

IF 判断 之前也写过简单的shell脚本,也不是转职运维,和系统相关的工作比较少,所以不怎么熟练. 最近由于系统总是出现各种乱七八糟的问题,也没有人来协助,只好自己写shell脚本了,都是些基础的脚本,但由于shell的语法和通常的高级语言有些不一样,所以还是要系统的看下常用的部分. if语句就是很重要的一个. 这种文章很多,只是拿来主义,如果有心得体会也会加上,小计下以后备查. 基本结构:  if语句块需要使用if结束 if condition then statements elif co