linux-shell脚本编程基本用法1

时间:2023-01-30 22:37:57

一行可以输入多个命令,用分号分割

date;who

这就是写脚本的过程

如果将命令写在文件中,运行这个文本就是shell脚本编程

现在写一个shell脚本编程的小例子

新建一个文件touch test1

在文件中编写执行命令 vim test1

第一行 #!bin/bash :指定使用的shell

可以加备注以#号开头

接着写命令就好

#!bin/bash
#first test1
date
who

执行这个文件test1,显然不行

1:可以配置环境变量执行脚本 

2:也可以使用./的形式执行脚本

测试以后者的形式

./test1

执行后发现没有执行权限:哈哈暴力的可以chmod 777 test1

再次执行 ./test1 成功

linux-shell脚本编程基本用法1

接下来考虑可能shell可能也有要显示的文本,要怎么展示呢,用echo

echo abc

echo "i’m girl"

echo ‘a says “shell is easy” .’

现在将文本信息加入到脚本

#!bin/bash
#first test1
echo the time and date are:
date
who
结果:

linux-shell脚本编程基本用法1

shell脚本使用变量:

使用环境变量用$,shell看见$就会认为后面接的是变量

写个小例子:

#!/bin/bash
# first test
echo The time and date are:
echo uid:$UID
echo home:$HOME
echo the cost of the item is \$20
date
who

执行结果,$前面加/就不是变量了

linux-shell脚本编程基本用法1

当然脚本里面也可以自己定义变量,用法和环境变量的方式差不多

例子

#!/bin/bash
#two test2
name1=zhang
age1=25
name2=$name1
age2=age1
echo name:$name1 age:$age1
echo name:$name2 age:$age2
结果:说明赋值另一个变量的值要用$取
linux-shell脚本编程基本用法1

关于反引号·:哈哈在键盘上和~是一个键

作用是将命令的值赋给变量

测试小例子

#!/bin/bash
#two test3

time1=date
time2=`date`
time3=$date
date
echo time1:$time1
echo time2:$time2
echo time3:$time3
~

结果:看到结果也就证实了反引号·的作用

linux-shell脚本编程基本用法1

关于格式化日期

date +%y%m%d

直接在shell里面可以测试,将当前的年月日输出170518

接下来就是运行的结果的输入输出了,刚刚的运行结果都输出在控制台了,那如果想输出到文件中呢?

>重定向输出的位置,>>追加到某文件文本后面

linux-shell脚本编程基本用法1

<输入的重定向:将文件的内容重定向到命令

linux-shell脚本编程基本用法1

查询test2 的行数6,单词数7 ,字节数64

某个命令的输出是另一个命令的输入:管道

rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序
rpm -aq 进行排序,先将rpm -aq 结果写入文件,在用sort排序输出

转换成一条命令,没有中间的文件缓存

rpm -aq | sort

太快太多是吧,那就more或者less下,一屏一屏的看

rpm -aq | sort | more

比较常见的命令:    ls -l |more 

数学运算:expr 允许在命令行上执行数学运算

expr 1 + 5

一些特别的要注意乘*

要转义

expr 1 \n * 5

echo $[ 1+ 20]

echo $[1 * 2]

在[ ]不用担心转义的问题

bash shell只支持整数的计算 ,内建的bash计算器

linux-shell脚本编程基本用法1

scale为变量控制,控制输出小数点后多少位

quit退出

在脚本中使用bc,使用的格式·echo “ scale=4;3.14/5” | bc·

#!/bin/bash
bcnum=`echo " scale=4; 3.14 / 5" | bc`
echo $bcnum
关于长的计算的表达式

使用格式:变量=·bc<<EOF

  表达式

EOF·

EOF可以为任意字符串,只要头尾呼应即可

测试例子:

linux-shell脚本编程基本用法1

关于退出状态的使用

当执行了一个shell的脚本,或许出错,或许正常,或许走的if或者else的条件不同,输出所走路径标识,类似于Java的system,out.println(),插入输出语句(不过常用debug打断点调试)在shell也可以使用

echo $? 用于当一个脚本执行完获取执行情况(结果)命令,

返回值为0,意味结果成功,

返回值为1,意味未知错误,

返回值为2,意味误用了shell的命令,

返回值为126 ,意味着命令不可执行

返回值为130 ,意味着被ctrl+c终止

。。。。。。。

当然,返回值,我们也也可以自己设置,用于辅助检查脚本

自己设置用exit  5, 设置返回值为数字5

如果使用echo $? 则会返回5

例子:

#!/bin/bash
val1=3.14
val2=2
val3=6.28;val4=3
val5=`bc<<EOF
scale=4
val1=$val1 / $val2
val2=$val3 * val4
val1+val2
EOF`
echo the val7:$val5
exit 5
vim test5 部分添加了exit 5

结果对比:


linux-shell脚本编程基本用法1