0
点赞
收藏
分享

微信扫一扫

Linux Bash Shell构建基础脚本

鱼满舱 2022-03-11 阅读 89
linuxbash

构建基础脚本

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

#!/bin/bash

环境变量

例:

#!/bin/bash
#display user information from the system
echo "User info for userid: $USER"
echo UID: $UID
echo HOME: $HOME

用户变量

用户变量可以是任何由字母、数字或下划线组成的文本字符串,长度不超过20个。用户变量区分大小写

例:

#!/bin/bash
#testing variales
days=10
guest="Katie"
echo "$guest checked in $days days ago"
days=5
guest="Jessica"
echo "$guest checked in $days days ago"

引用一个变量时需要使用美元符,赋值时不需要使用美元符

例:

#!/bin/bash
#assigning a variable value to another variable
value1=10
value2=$value1
echo The resulting value is $value2

命令替换

利用反引号`或$()把整个命令围起来

例:

#!/bin/bash
testing=$(date)
#testing=`date`
echo "The date and time are: " $testing

例:

#!/bin/bash
#copy the /usr/bin directory listing to a log file
today=$(date +%y%m%d)
ls /usr/bin -al > log.$today

执行数学运算

expr命令

操作符描述
ARG1 | ARG2如果ARG1既不是null也不是零值,返回ARG1;否则返回ARG2
ARG1 & ARG2如果没有参数是null或零值,返回ARG1;否则返回0
ARG1 < ARG2如果ARG1小于ARG2,返回1,否则返回0
ARG1 <= ARG2如果ARG1小于或等于ARG2,返回1,否则返回0
ARG1 = ARG2如果ARG1等于ARG2,返回1,否则返回0
ARG1 != ARG2如果ARG1不等于ARG2,返回1;否则返回0
ARG1 >= ARG2如果ARG1大于等于ARG2,返回1;否则返回0
ARG1 > ARG2如果ARG1大于ARG2,返回1;否则返回0
ARG1 + ARG2返回ARG1和ARG2的算术运算和
ARG1 - ARG2返回ARG1和ARG2的算术运算差
ARG1 * ARG2返回ARG1和ARG2的算术乘积
ARG1 / ARG2返回ARG1被ARG2除的算术商
ARG1 % ARG2返回ARG1被ARG2除的算术余数

例:

#!/bin/bash
#An example of using the expr command
var1=10
var2=20
var3=$(expr $var2 / $var1)
echo The result is $var3

使用方括号

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

例:

#!/bin/bash
var1=100
var2=50
var3=45
var4=$[$var1*($var2-$var3)]
echo The final result is $var4

bash shell数学运算符只支持整数运算

例:

#!/bin/bash
var1=100
var2=45
var3=$[$var1/$var2]
echo The final result is $var3

浮点解决方案

bc bash计算器

例:

varriable=$(echo "options;expression" | bc)

scale为保留n位小数

例:

#!/bin/bash
var1=$(echo "scale=4;3.44/5"|bc)
echo The answer is $var1

例:

#!/bin/bash
var1=100
var2=45
var3=$(echo "scale=4;$var1/$var2"|bc)
echo The answer for this is $var3

例:

#!/bin/bash
var1=20
var2=3.14159
var3=$(echo "scale=4;$var1*$var1"|bc)
var4=$(echo "scale=4;$var3*$var2"|bc)
echo The final result is $var4

上述方法可以解决较短的运算,较长的运算可以以如下方法解决:

    variable=$(bc<<EOF
options
statements
expressions
EOF

)

EOF文本字符串标识了内联重定向数据的起止

例:

#!/bin/bash
var1=10.46
var2=43.67
var3=33.2
var4=71

var5=$(bc<<EOF
scale=4
a1=($var1*$var2)
b1=($var3*$var4)
a1+b1
EOF

)
echo The final answer for this mess is $var5

退出脚本

一个成功结束的命令的退出状态码是0,如果一个命令结束时有错误,退出状态码就是一个正数

LINUX退出状态码

状态码描述
0命令成功结束
1一般性未知错误
2不适合的shell命令
126命令不可执行
127没找到命令
128无效的退出参数
128+x与linux信号x相关的严重错误
130通过ctrl+c终止的命令
255正常范围之外的退出状态码

返回指定的退出码

例:

#!/bin/bash
#testing the exit status
var1=10
var2=30
var3=$[$var1+$var2]
echo The answer is $var3
exit 5

exit返回命令的参数中使用变量

例:

#!/bin/bash
var1=10
var2=30
var3=$[$var1+$var2]
exit $var3

最大返回值只能是255,如果超过0-255范围会得到模运算结果

例:

#!/bin/bash
var1=10
var2=30
var3=$[$var1*$var2]
exit $var3
举报

相关推荐

0 条评论