shell脚本文件

写着写着,,发现自己会用md了,就在下面使用了各级标题。

本来是有图片的,但是md的直接复制过来还得重新上传图片。。。以后就会直接粘贴命令了,图片可有可无。

1、打印全局变量使用:printenv,查看某一个全局变量的值使用echo $name

显示环境变量则需要$,如果需要操作环境变量则不需要加

2、设置全局环境变量(export 命令):

只需要将程序所在的目录加入到path路径下即可。

可以先切换到该文件所在的目录,然后直接后面跟上:.即可

3、shell会从以下五个文件中读取命令

/etc/profile

$HOME/.bash_profile

$HOME/.bashrc

$HOME/.bash_login

$HOME/.profile

4、vim命令学习:

普通模式下:

h:左移一个字符

j:下移一行

k:上移一行

l:右移一个字符

PageDown(ctrl +F):下移一屏

PageUp(Ctrl + B) :上移一屏

G:最后一行

num G:移动到第num行

gg:第一行

命令行模式下:

w filename:保存到另一个文件中

编辑命令

x:删除光标所在地的字符

dd:删除当前光标所在行

dw:删除光标所在位置的单词

d$:删除当前光标所在位置至行尾的内容

J:删除当前光标所在行行尾的换行符

u:撤销前一个编辑命令

a:在当前光标后追加数据

A:在当前光标所在行行尾追加数据

r char:用char代替当前光标所在位置的字符

R text:用text覆盖当前光标所在位置的数据,直到按下ESC键

复制粘贴命令:

y命令结合d后的字母,可以实现复制,然后将光标移动到需要粘贴的地方使用p命令即可完成粘贴操作

查找替换命令:

使用/进行查找内容

使用:s/old/new/进行替换内容 一行

其余格式

:s/old/new/g :一行内替换全部

:n,ms/old/new/g :替换行n至m内的所有对象

:%s/old/new/g : 替换文件内的所有对象

:%s/old/new/gc:替换全部,但是每次替换均提示

11.2 创建shell脚本文件

1、一个简单的脚本文件:

#!/bin/bash

date

who

2、echo注意事项

1、若有单引号或者双引号要输出,则用双引号包住单引号,用单引号包住双引号

2、若要将其与输出处于同一行,则可以使用-n命令避免输出换行,在最末尾的地方需要加上一个空格

3、使用变量

3.1环境变量

set命令可以查看完整的环境变量列表(确实完整,,一页放不下)

\,反斜线可以转义美元符号

3.2用户变量
#!/bin/bash
year=20
me=TedLau
echo "$me is $year "

~
~

4、格式化命令替换

使用反引号或者$()

#!/bin/bash
testing=`date`
echo "The date is : " $testing
am=$(date)
echo $am

格式化输出日期:date + %y+%m+%d

11.5重定向输入与输出

1、输出重定向

最基本的输出命令是将命令的输出发送到一个文件中。bash shell使用>来完成重定向输出

如date > 618,若原文件已存在内容,则会覆盖其内容

one single > will cover existing content

two > will retain the existing content

2、输入重定向

输入使用的是<

wc(word count) will output :line 、words count 、the bytes of the file

e.g.:wc < 618

wc << flag

Using flag to end input.

e.g.:

$wc << 618 
> s
> ls
> 618
2 2 5

11.7执行数学运算

1、expr命令

expr中的*号需要转义

       ARG1 | ARG2
            ARG1 if it is neither null nor 0, otherwise ARG2

      ARG1 & ARG2
            ARG1 if neither argument is null or 0, otherwise 0

      ARG1 < ARG2
            ARG1 is less than ARG2

      ARG1 <= ARG2
            ARG1 is less than or equal to ARG2

      ARG1 = ARG2
            ARG1 is equal to ARG2

      ARG1 != ARG2
            ARG1 is unequal to ARG2

      ARG1 >= ARG2
            ARG1 is greater than or equal to ARG2

      ARG1 > ARG2
            ARG1 is greater than ARG2

      ARG1 + ARG2
            arithmetic sum of ARG1 and ARG2

      ARG1 - ARG2
            arithmetic difference of ARG1 and ARG2

      ARG1 * ARG2
            arithmetic product of ARG1 and ARG2

      ARG1 / ARG2
            arithmetic quotient of ARG1 divided by ARG2

      ARG1 % ARG2
            arithmetic remainder of ARG1 divided by ARG2

      STRING : REGEXP
            anchored pattern match of REGEXP in STRING

      match STRING REGEXP
            same as STRING : REGEXP

      substr STRING POS LENGTH
            substring of STRING, POS counted from 1

      index STRING CHARS
            index in STRING where any CHARS is found, or 0

      length STRING
            length of STRING

2、使用方括号

1、命令行中进行运算

方括号中的*号不需要转义,因为shell知道它在方括号内,就不是通配符

 $var=$[1 + 5]
┌─[tedlau@parrot]─[~/Desktop/1]
└──╼ $echo $var2
7
┌─[tedlau@parrot]─[~/Desktop/1]
└──╼ $var2=$[$var * 7]
┌─[tedlau@parrot]─[~/Desktop/1]
└──╼ $echo $var2
42
┌─[tedlau@parrot]─[~/Desktop/1]
└──╼ $
2、bash脚本中进行运算
#!/bin/bash
var1=100
var2=50
var3=45
var4=$[$var1 * ($var2 - $var3)]
echo Result is $var4

bash shell中只支持整数运算,小数会舍去,zsh已经可以进行浮点运算

3、浮点解决方案

3.1、bc的基本使用

可以在bash shell中简历计算器,简称bc

bc中需要设置scale的值,否则就无法运算小数

shell中可以直接使用,并且支持定义变量,如C语言一般

quit退出

3.2、脚本中使用bc
#!/bin/bash
var1=$(echo "scale=55;23 / 43" |bc)
echo Result is $var1
~

多行的bc脚本,使用了内联重定向

#!/bin/bash
var1=1.23
var2=2.34
var3=1213.3
var4=89
var5=$(bc << EOF
scale = 10
a1 = ($var1 * $var2)
a2 = ($var3 + $var4)
a1+a2
EOF
)
echo The final result is $var5

11.8、退出脚本

1、退出码

┌─[tedlau@parrot]─[~/Desktop/1]
└──╼ $date
2020年 06月 18日 星期四 22:01:34 CST
┌─[tedlau@parrot]─[~/Desktop/1]
└──╼ $echo $?
0
─[✗]─[tedlau@parrot]─[~/Desktop/1]
└──╼ $asdasd
bash: asdasd:未找到命令
┌─[✗]─[tedlau@parrot]─[~/Desktop/1]
└──╼ $echo $?
127

$? :存放上个已执行过得命令的退出状态码

需要检查的命令,必须在运行完毕后就立刻查看其状态码

错误的返回一个正值

状态码描述
0命令成功结束
1通用未知错误  
2误用Shell命令
126命令不可执行
127没找到命令
128无效退出参数
128+xLinux信号x的严重错误
130命令通过Ctrl+C控制码越界
255退出码越界

2、exit命令

shell脚本中的最后一个命令的退出状态为退出码

可以自定义退出码,使用exit命令

#!/bin/bash
var1=1.23
var2=2.34
var3=1213.3
var4=89
var5=$(bc << EOF
scale = 10
a1 = ($var1 * $var2)
a2 = ($var3 + $var4)
a1+a2
EOF
)
echo The final result is $var5
exit 666



┌─[tedlau@parrot]─[~/Desktop/1]
└──╼ $neilianbc
The final result is 1305.1782
┌─[✗]─[tedlau@parrot]─[~/Desktop/1]
└──╼ $echo $?
154
翻车了、、、、、、,最大值是255

#!/bin/bash 是shell的完整路径

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值