1. 所有变量都会保存在内存中,重启失效,除非写在配置文件中 3
所有变量都会保存在内存中,重启失效,除非写在配置文件中
read 从标准输入读取内容
位置参数变量更适合作者输出,read更适合用户输入
read 【选项】 信息
选项:
-t 等待时间(秒)
- p 打印提示
-n 限制输入字符数量为n
当达到n位字符自动执行
-s 隐藏输入的字符
read可以实现多个参数导入
如果不指定变量名,会把输入保存到默认变量REPLY
declare声明变量类型
declare [+/-] [选项] 变量名
选项
- :给变量设定类型属性
-a 将变量声明为数组型
declare -a name[0]="sc"
name[0]="shenchao" (可以省略declare -a)
-i 将变量声明为整数型
delcare -i c=$a+$b
-r 将变量修改为只读变量(之后无法修改删除,甚至取消属性,重启失效,不推荐使用)
-x 将变量声明为环境变量
declare -x TEST=123 (作用和export TEST=123一样)
-p 显式指定变量被声明的类型
declare -p 查询所有变量(类似于set)
declare -p 变量名 查询此变量类型
+:取消变量的类型属性
declare +a name[0]="sc"
declare -p "shenchao" 查询此变量类型
shell运算式
declare方法
a=11 b=22 decalre -i c= $a+$b echo $c
expr
直接计算
expr 1 + 3 (切记有空格)
expr 1 - 3
expr 1 \* 3
expr 1 / 3
expr 1 % 3
变量计算
a=11 b=22 d=expr $a + $b echo $d
expr 1 + 3 expr 1 - 3 expr 1 \* 3
expr的特殊用法
由此可知expr可以用来判断一个数是否为整数,非整数就会报错
bc 计算器(默认输出为整数)
交互式计算方法
bc,然后1+2什么的
非交互式计算方法
echo "3+5" | bc
保留小数点输出方式
let
主要用于while循环中,变量自增赋值
a=11 b=22 let e=$a+$b echo $e (格式和declare相似)
循环:a=1 ; let a++ ; echo $a
$((运算式))
直接计算
$((1+2))
$((1*2))
$((1/2))
$((1%2))
$((10**2)) 平方计算10的2次方
$((10**3))10的三次方
a=11 b=22 ff=$(( a+b )) echo $ff
推荐用这个方式
echo $[10+8]不建议
awk也可以做计算,使用printf格式化输出
shell运算符
- + 正负
~ 按位取反或补码
* / % 乘 除 取模
+ -加减
& | >= <= 与 或 非 大于等于 小于等于
练习做一个计算器
变量的测试与内容置换
变量置换方式:x=${m-new} 若m未设置值,输出为new,若m设定了值,则显示m所设定的值(包括空值)
也可以用set -u检测
发布者:LJH,转发请注明出处:https://www.ljh.cool/35182.html