shell(1)构建基本脚本

目录

1.一个命令行中使用多个命令

2.创建shell脚本文件

3.echo命令

4.用户变量

5.输出重定向

6.输入重定向

7.管道(piping)命令

8.数学运算($[operation])


1.一个命令行中使用多个命令

可以将shell多个命令串起来,放在同一行中,彼此间用分号隔开。

注意:这种方法虽然能将任意多个命令串联在一起使用,但是不能超过最大命令行字符数255.

缺陷:每次运行,都需要输入整个命令。优化:将这些命令组合成一个简单的文本文件,运行时只需要运行该文本文件(即shell脚本文件)。

2.创建shell脚本文件

在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。其格式为:

#!/bin/bash

shell脚本中,#是行注释符号,shell不会处理注释掉的内容,但是第一行例外!#后面的惊叹号会告诉shell用哪个shell来运行脚本。这里使用的是bash shell。

在指定了shell脚本之后,每一行可输入命令,同一行多个命令之间也用分号分开,行与行之间的命令直接回车键(不能分号结尾)。shell会根据命令在文件中出现的顺序进行处理。

注意:脚本文件不需要严格后缀,只要是文件即可。

运行脚本:当前目录下面 ./script 使用单点 操作符运行。

3.echo命令

echo this is a test    输出: this is a test
注解:默认情况下,不需要使用引号将需要显示的文本划定出来。

echo let's see if this'll work  输出:lets see if thisll work
注解:如果字符串中间出现引号,那么该引号会自动成对,并且里面的字符直接输出

echo "let's see if this'll" work  输出: let's see if this'll work
注解:如果引号本身也是输出的一部分,则可用单引号或者双引号来划定文本字符串(需要输保留的引号部分)。

echo "USER: $USER"   输出:USER: root
注解:如果$没有加转义符,默认是引用一个变量,如果变量并未定义则不显示。

echo “the cost of the item is $15”  输出:the cost of the item is 5
注解:默认认为$1为变量,尝试显示但是未定义。如果要显示美元符号,则应该加上转义符反斜杠\$15

说明: ${variable}形式引用变量,这对花括号通常用来帮助识别美元符号后的变量名。

4.用户变量

shell维护着一组环境变量,可用set命令来查看。除了环境变量,shell还允许在脚本中定义和使用自己的变量。用户变量的命名要求:可以由字母、数字和下划线组成,但是不能以数字开头。

(1)使用等号将值赋给用户变量,但是在变量、等号和值之间不能出现空格。否则会报错。即使值的名字和变量名一样,没有美元符号会被解释成普通文本。
test=10;b=test;c=$test;d=$b;echo $test,$b,$c,$d

其中变量b的值是普通文本test,变量c的值是变量test的值10,变量d的值是变量b的值test文本。

(2)变量的值如果有空格,需要使用双引号或者单引号包括。否则会报错。

(3)变量的值中可以使用\转义符。

(4)变量的值中,双引号括起来的内容“$”、“\”和反引号都拥有特殊含义,而单引号括起来的内容都是普通字符。

(5)变量值的叠加,可以使用两种方式:“$变量名”或${变量名}
第一个因为变量未定义($test456)所以值为空。第二个和第三个识别出来该变量的值。

(6)变量的路径,可以直接使用变量,也可以使用上面变量的叠加方式

 (7)命令不是变量名。如果要使用命令产生的结果作为值赋予变量,可以使用``一对反引号或者$()包含命令。

date是shell命令,但不是变量,所以不能引用变量的方式,否则该变量未定义输出为空。如果需要该命令的结果作为值,则需要采用反引号或包含的方式。如果需要叠加也是可以的。

 (8)变量查看和删除

查看使用set命令,删除使用unset 变量名 ​

(9)特殊的字符赋值
制表符和换行符是特殊字符,格式:var=$'\t'  和 var=$'\n',必须使用$且单引号
一般字符直接赋值, 如var=;   var=" "

5.输出重定向

(1)最基本的重定向是将命令的输出发送到一个文件中。

command > outputfile

 重定向操作符>(大于号)创建了一个jupy文件(通过默认的umask设置),并将date命令的输出重定向到该文件中。如果输出文件已经存在了,重定向操作符会用新的文件数据覆盖已有的数据。

(2)不想覆盖原有文件内容,而是想将命令的输出追加到已有的文件中,可以使用双大于号(>>)来追加数据。如果输出文件不存在则会创建。

command >> outputfile

6.输入重定向

(1)输入重定向将文件的内容会重定向到命令,而非将命令的输出重定向到文件。

command < inputfile

记忆方法:命令行上,命令总在左侧,而重定向符号"指向"数据流动的方向。

wc命令可以对数据中的文本进行技术,默认情况下会输出3个值:行数、词数、字节数。

(2)内联输入重定向(<<),这种方法不需要使用文件进行重定向,只需要在命令行中指定用于输入重定向的数据就可以。格式如下:

command << marker

data

marker

除了<<符号,必须指定一个文本标记来划分输入数据的开始和结尾。任何字符串都可以作为文本标记,但在数据的开始和结尾文本标记必须一致。

mark必须是一个整体,如果含有空格需要引号。会将marker之间的data输入重定向到wc命令中。

7.管道(piping)命令

管道被放在两个命令之间,将一个命令的输出重定向到另一个命令中。格式:

command1 | command2

如果使用重定向,则需要借助中间文件:command1 > temp-file;command2 < temp-file

注意:由管道串起来的两个命令并不是依次执行,实际上linux系统会同时运行这两个命令,在系统内部将它们连接起来。在第一个命令产生输出的同时,输出会立即送给第二个命令。数据传输不会使用任何的中间文件或缓冲区。

(1)可以在一条命令中使用任意多条管道。可以持续的将命令的输出通过管道传给其他命令来细化操作。command1 | command2 | command3 | command4 |...

这行命令会先执行rpm命令,将他的输出通过管道传给sort命令,然后将sort命令的输出传给more命令来显示。

也可以搭配使用重定向和管道来将输出保存到文件中。

8.数学运算($[operation])

在bash中,将一个数学运算结果赋值某个变量时,可以使用美元符和方括号( $[operation] )将数学表达式围起来。

   使用方括号来计算公式的时候, 方括号里面对空格没有约束,不必担心shell会误解乘号或其它符号,因为它在方括号内,shell就知道它不是通配符。同时表达式里面的变量可以不需要美元符$。可以看出来里面的大于号不需要转义,不会被认为是重定向符号。

注意:在bash shell脚本中,数学运算符只支持整数运算。直接砍去小数点后面的数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值