本文主要讲解“linux命令sh是什么意思”,感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。下面就让主机频道带你学习一下“linux命令sh是什么意思”!
linux命令sh是在Linux中运行shell的命令,是shell解释器。shell脚本是linux中的shell和命令行接口,用户可以在shell脚本中输入命令来执行各种任务。
1.可能的执行方式。linux下的sh文件。sh文件是一个文本文件。如果要执行,需要使用chmod a+x xxx.sh给予可执行权限。
2.开始:#!/bin/shshell程序必须以“#!/bin/sh "。#在果壳里一般是评论的意思,所以很多时候被认为“#!"也是评论,其实不是。
"#!/bin/sh & quot;是一个关于shell、您正在使用的shell类型及其路径的声明。
#!/bin/表示这个脚本是用。bin/sh。
#!是一个特殊符号,后跟解释该脚本的shell的路径。如果没有声明,脚本将在缺省shell中执行,缺省shell由用户的系统定义为执行shell脚本。如果脚本被编写为在Korn shell KSH中运行,并且默认的shell脚本是C shell csh,那么脚本很可能在执行过程中失败。所以我建议你把“#!/bin/sh & quot;作为C语言的主要功能,需要写一个shell,让shell程序更加严谨。
3.变量必须在其他编程语言中使用。在shell编程中,所有的变量都是由字符串组成的,不需要声明变量。要给变量赋值,可以写:
#!/bin/sh
#为变量赋值:
A = "hello world" #现在打印变量a的内容:
Echo "A is:" echo $a a有时变量名很容易与其他单词混淆,例如:
数量=2
Echo“这是第$ NUMBER个nd”这不会打印出来“这是第二个& quot只需打印“这是& quot因为shell会搜索变量numnd的值,但是这个变量没有值。因此,花括号可以用来告诉shell我们想要打印num变量:
数量=2
回显“这是$ {num} nd”以便打印“这是第二次& quot
4.shell命令和进程控制shell脚本中可以使用以下命令:
Unix命令尽管您可以在shell脚本中使用任何unix命令,但是仍然有一些相对更常用的命令。这些命令通常用于文件和文本操作。比如:
回声& quot一些文本& quot#打印屏幕上的文本内容
Ls #文件列表
Cp源文件destfile #文件副本
重命名或移动一个文件。
Rm文件#删除文件
grep & # 39模式& # 39;File #在文件中搜索字符串,例如grep & # 39searchstring & # 39file.txt
Cat file.txt #将文件内容输出到标准输出设备(屏幕)。
Read var #显示用户输入并将输入分配给变量概念:管道、重定向和反勾管道|使用一个命令的输出作为另一个命令的输入。
grep & quot喂& quotFile.txt | wc -l上面的代码表示为:在File.txt中搜索包含“hello”的行,计算行数。这里,grep命令的输出被用作wc命令的输入。
需要注意的是,流水线之后的命令是子命令,不会出现在下一条命令中(有点像{}和{}中C++赋值的区别),比如下面这条命令:
#!/bin/shecho 1 2 3 | {读a b c;echo $ a $ b $ c;} #打印结果为:1 2 3echo $a $b $c #打印结果为空。重定向:将命令的结果输出到一个文件,而不是标准输出(屏幕)。& gt写文件并覆盖旧文件> & gt追加到文件末尾,保留旧文件的内容。
反破折号“`”:使用反破折号可以将一个命令的输出作为另一个命令的命令行参数。
找到。-mtime -1 -type f -print上述语句用于查找在过去24小时内修改过的文件(-mtime -2表示过去48小时)。如果您想打包所有找到的文件,您可以使用linux脚本:
#!/bin/sh
#记号是反记号(`),而不是正常的引号('):
塔尔-zcvf lastmod.tar.gz `发现。-mtime-1-type f-print `过程控制ifif表达式,如果条件为真,则执行以下部分:
如果…;然后
….elif …;然后
….其他
...fi #注意是以fi结尾的。在大多数情况下,您可以使用test命令来测试条件。比如可以比较字符串,判断文件是否存在,是否可读等等…
whilewhile循环的语法结构是:
# expression 1# while循环:建立表达式时,执行cmd while (expression) do。
Cmddone#表达式2,可以直接用truewhile true(或:)do。
Cmddone该命令可用于管道,例如:
#在${path}路径下找到唯一一个以' e '开头的子目录,并将其cd到目录find $ {path}/e *-type d |同时读取corresp _ pathdo。
cd ${corresp_path}done测试条件通常使用“[]”来表示测试条件。重要的是要注意这里的空格,并确保空格在方括号中。
[-f & quot;somefile & quot] #判断文件是否存在。
[-d & quot;测试结果/& quot;] #判断目录testResults/是否存在。
[-x & quot;/bin/ls & quot;] #判断/bin/ls文件是否存在,是否有可执行权限。
[-n & quot;$ var & quot] #判断$var变量是否有值。
[& quot;$ a & quot= & quot$ b & quot] #判断$a和$b是否相等熟悉C语言的快捷运算符可能会喜欢这样的表达式:
[-f & quot;/etc/影子& quot]& amp;& ampEcho "这台电脑的影子通行证"在这里" &;& amp是快捷操作符,如果左边的表达式为真,则执行右边的语句。当然,上述表达式也可以视为逻辑运算中的AND运算。
shell编程中也有相同的OR操作“||”:
#!/bin/sh
mail folder =/var/spool/mail/James[-r & quot;$ mailfolder & quot]“{ echo”无法读取$ mail folder”;出口1;} #我感觉这里的''应该是||
Echo "$ TERM folder有mail from:" $ TERM folder的" grep "这个脚本首先确定mailfolder是否可读。如果可读,打印文件中的“From”行。如果它不可读,则OR操作生效,脚本在打印错误消息后退出。这里有一个问题,就是我们必须有两个命令:◆打印错误信息◆退出程序。我们使用花括号将两个命令以匿名函数的形式放在一起作为一个命令。下面将提到一般功能。没有and和or操作符,我们可以对if表达式做任何事情,但是使用AND或OR操作符要方便得多。
评论前必须登录!
注册