欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

入门---shell编程运算符 退出状态

程序员文章站 2022-07-10 08:20:46
...

1.3 shell编程运算符 退出状态
运算符:
+ - * / %
执行运算:
1.$(( ab) )
可以有空格
里面的运算符不需要转义
如果和字符串相加,字符串的变量默认为0
2.expra+b
数字两遍必须有空格
里面的运算符需要转义 转义符
不支持数字和字符串相加
不支持浮点数运算
3.[] 使用方括号
echo $[a
b]
echo [a+b][a+b] 可以直接调用变量的值,无需添加fuhao
可以有空格
里面的运算符需不要转义
不支持浮点数运算
以上三种都可使用变量
浮点数运算:
bc //linux自带的计算器
//支持变量运算
scale=4 //指定小数点后面保留4位
如何应用到脚本里:
借用管道符号

echo “scale=5; 10/ 3” | bc

运算多行:
d=bc << EOF d=$ (bc << EOF 1+2 1+2 3+4 3+4 5*6 5*6 EOF EOF )
例子:
#vim expr. sh

#!/bin/bash
echo “scale=5; 10/ 3” | bc
a=5.1
b=1.2
c=3
d = bc << EOF e =($a + $b) f =( $a-$c ) e+f EOF
echo $d

sh expr. sh

`` 和 $ (命令)
//效果是一样的

退出状态

echo $?

查看上一个命令执行的退出状态
返回值为0时,代表命令执行成功
非0的正整数时,执行不成功
0-255
exit=$ (echo $?)
0 命令成功结束
1 一般性未知错误
2 不适合shel1的命令
126 命令不可执行
127 命令未找到
128 无效的退出参数
130 通过Ctrl+c终止的命令
255 正常范围之外的退出状态码

状态码是可以自己定义的:0-255
300-255=45
exit1=4
exit2=5
exit3=6

第1行
echo $exit1
第2行
第3行

exit $变量名
//自定义返回值
算术扩展和let进行算术运算
算术扩展
可以对算术表达式求值并替换成所求得的值
看一下格式: $(( 算术表达式))
注意:算术表达式只能是整数,不能对浮点数进行算术运算
let运算
运算不能有空格
若非要有看空格怎么办?用双引号引起来!

shell脚本编程 变量补充 if条件判断
变量的类型:
字符串 数值 布尔类型:true false null
shell中指定变量的类型: declare
declare:
内置命令
用来声明和修改变量的属牲(只读–readonly-- r)

declare -r a=10

   //不能修改包括不能删除

例子:

declare -r timedate=date +%Y%m%d

echo $timedate

timedate=i date +%y%m%d

unset timedate

设置为数值变量:

declare -i 变量名

// 只能存储数值
// 不能为小数,如果存小数,会只保留整数
// 不能存字符串类型,存字符串值显示为0

例子

declare -i a

a=10.

echo $a

a=9/3

echo $a

查看变量的属性和值:
# declare -p 变量名
// declare -i a =“10”

数组:
一个变量对应一个值: a =10
一个变量对应多个值:
linux =(centos debain suse redhat)
当你想要定义多个值用括号括起来里面要空格分开
查看数组的值:
# echo ${linux [0]}
//下标 从前往后从0开始计数
//从后往前从-1开始计数
显示所有内容:
# echo ${linux[@]}
在已有的数组中添加:
# linux[4]=febora
//注意:(不能跳过数组下标去添加加数组的值,会出现为空)
在已有的数组上更改:
# linux[0]=

例子

echo $linux[0]

echo $linux.haha

echo ${linux[0]}

echo ${linux[1]}

if条件判断、
语法结构:
if 命令/判断语句
then
执行语句
fi 结束
或者
if command ; then
执行语句
fi
if 5>2
then
echo “you are OK”
fi

if pwd(显示当前目录)

#!bin/bash
//测试if开始的语句
if pwd
then
echo “nihao”
fi
/root
nihao
//执行了if中pwd的命令,由于状态码是0,又执行了then中的语句

#sh ifone.sh

if条件判断一个用户是否正在当前系统上使用,如果是,显示在使用,
并列出此家目录的信息。
#vim test.sh
#!bin/bash
#useradd cml
#/etc/passwd
username =cml
if grep username/etc/passwdthenecho"OK"lsa/home/username /etc/passwd then echo "OK" ls -a /home/username/
fi

升级脚本:
用户从键盘输入用户的名字,然后进行查询

#!/bin/bash
read -p "please input your username:"username
if grep username/etc/passwdthenecho"ok"lsa/home/username /etc/passwd then echo "ok" ls -a /home/username/
fi

相关标签: shell脚本