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

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 u s e r n a m e / e t c / p a s s w d t h e n e c h o " O K " l s a / h o m e / username /etc/passwd then echo "OK" ls -a /home/ username/
fi

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

#!/bin/bash
read -p "please input your username:"username
if grep u s e r n a m e / e t c / p a s s w d t h e n e c h o " o k " l s a / h o m e / username /etc/passwd then echo "ok" ls -a /home/ username/
fi

发布了138 篇原创文章 · 获赞 149 · 访问量 8453

猜你喜欢

转载自blog.csdn.net/weixin_44799645/article/details/104688638