shell变量的设置规则

2023-11-06

1、变量设置规则

便量设置规则

2、变量赋值与运算

1)变量赋值:
name=lbg 等号前后不能有空格
name=“Lebron James” 变量值中有空格要用双引号
echo n a m e 用 {name} 用 name{}更保险
shopt -s -o nounset 设置“先声明再使用”

2)取消变量:
unset 释放变量和函数的内存

3)特殊变量(位置参数)
${n}:输入的第n个参数($0表示脚本名字,$1-$9表示输入的第1至9个参数,十以上的参数要用花括号表示)
$#:输入参数的数量(即上面花括号中的n值)
$@:输入的所有参数,但把每个参数区分对待
$*:代表输入的所有参数,并把所有的参数看成一个整体
$!:输入的最后一个参数
$?:上一个命令的返回值(用于在脚本中判断之前命令的执行状态,任何非0的返回都表示非正常执行)

示例:

$ cat test.sh
#!/bin/bash
echo $0
echo $1
echo $2
echo $#
echo $@
$ ./test.sh test1.txt test2.txt
./test.sh
test1.txt
test2.txt
2
test1.txt test2.txt

4)数组:
declare -a Array=(‘ladawn’ ‘lbg’ ‘lbj’)

5)只读变量:
declare -r N=10
readonly N=10

6)函数中的变量:
若不声明local,则函数中的变量也为全局变量。
若声明为local(local var=200),则变量的作用域只在函数内。

7)引用:
双引号:弱引用,特殊符号($、\、`)仍然解析为特殊的意义。
单引号:强引用,所有的字符都是字面意思,不再有特殊意义。

8)命令替换:
A=$(data)或者A=data,表示将data命令的输出结果取出,赋给A

9)bc运算:
用于浮点数计算输出。通过管道使用。
tatal=$(echo “34/15” | bc)

10)数值运算:

let “sum+=1” #表示sum = sum+1
let “j=sum%2” #表示j = sum % 2

参考:https://www.cnblogs.com/ladawn/p/8412553.html

3、shell整数运算

方法一:expr

expr 1+2
expr $num1 + $num2
sum expr $num1 + $num2

方法二:$(())

echo $((num1+num2))
echo $((2**10)) #2的10次方

方法三:let

let sum=1+1
let i++

4、shell小数运算

echo “2*4” |bc
echo “2**4” |bc
echo “scale=2;6/4” |bc
echo ‘BEGIN{print 1/2}’
echo “print 5.0/2” | python
num=$(echo “scale=2; 0.13 + 0.1” | bc)
echo $num

运行脚本,结果显示为:.23
我发现shell中显示小于1的小数,小数点前都没有0
bc本身还没有选项来设置输出小数点前的0,只能用别的方法进行格式化输出了,比如:

echo “scale=2; 0.13 + 0.1” | bc | awk ‘{printf “%.2f”, $0}’

5、shell运算符

对于字符串运算只能用:> 、 < 、 ==(==和=等效)、 != 、 -n(长度是否非0) 、 -z(长度是否为0),注意:没有>=和<=运算符
对于数字运算有两种方式:> 、 < 、 == 、 != 和 -eq(等于)、-ge(大于等于)、-gt(大于)、-le(小于等于)、-lt(小于),主要倾向于第二种方式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell变量的设置规则 的相关文章

随机推荐

  • 配置acados时出现“Segmentation fault,Exception: Rendering of main.in.c failed!”报错

    问题描述 在安装acados后运行测试节点时出现错误 liangjunming XX program acados examples acados python getting started on git master o 11 49 1
  • 如何安装Chrome OS系统

    Chrome OS是由Google设计的基于Linux内核的操作系统 它源自免费软件Chromium OS 并使用Google Chrome网络浏览器作为其主要用户界面 因此 Chrome操作系统主要支持Web应用程序 谷歌于2009年7月
  • 【Linux】Shell脚本中获取命令运行的结果

    前言 写shell脚本的时候 常需要将一个命令的运行结果做为参数传递给另外一个命令 除了我们熟知的管道 和args 我们也可以通过获取命令的运行结果 1 通过反引号 command 来完成 result date echo result r
  • 象牙塔式的开发

    我向来不鼓励象牙塔式的开发模式 开发团队常年封闭在 高塔 之中 一门心思地做着魔法一样的软件 这些开发者根本不知道用户会怎样使用他们做出来的软件 你若问他们 最近一次面见用户是在什么时候 他们甚至可能都回答不上来 因为缺失强有力的证据 开发
  • HOOK框架——静态代理

    往期推荐 实战案列分析 Crakeme01 实战 AliCrackme 实战案列 AntiDebug self debugging反调试 需要相关资料的朋友 可以 加入此处即可打包获取 代理模式分为静态代理和动态代理 静态代理是编译阶段就生
  • C++学习日记1

    1 头文件 输入输出流 include
  • nanomsg(3): push/pull 模式

    推拉之间构建起数据的双向交互 值得注意的是 先推再拉 和先拉再推 并没有启动的先后顺序 pull cpp include
  • Linux搭建部署JDK1.7环境

    jdk下载 官网链接 https www oracle com java technologies javase javase7 archive downloads html jdk 7u80 oth JPR 打开linux系统的终端 在l
  • python题目58:工厂流水线调度

    一个工厂有m条流水线 来并行完成n个独立的作业 该工厂设置了一个调度系统 在安排作业时 总是优先执行处理时间最短的作业 现给定流水线个数m 需要完成的作业数n 每个作业的处理时间分别为 t1 t2 tn 请你编程计算处理完所有作业的耗时为多
  • Docker+NETCore系列文章(四、镜像commit操作)

    文章目录 镜像commit操作 一 Docker安装Tomcat 二 镜像commit操作 1 命令解析 2 实操 赞赏 镜像commit操作 一 Docker安装Tomcat 1 官方使用方法 用完容器就删除 docker run it
  • AD画PCB板子 基本步骤

    软件环境 Altium Designer13 汉化版 plus 大二上的电子工艺实习 第一次画pcb板子 在大佬的耐心指导下 反复倒腾这个软件 把步骤整理下 help其它新手 一 画原理图步骤 Schdoc文件 1 新建工程 点击左上角 2
  • Kettle入门(六)

    资源库 数据库资源库 数据库资源库是将作业和转换相关的信息存储在数据库中 执行的时候直接去数据库读取信息 便于跨平台使用 操作步骤 1 点击右上角 connect 选择 Other Resporitory 2 选择 Database Rep
  • dom影像图形成数字地形图_基于MapMatrix的数字正射影像图制作

    施卫东 周小扬 摘 要本论文基于武汉航天远景科技股份有限公司的新型数字摄影测量系统MapMatrix 结合武汉商学院三维数字校园生产实践进行1 2000数字正射影像图制作 探讨数字正射影像图 DOM 的制作方法 并说明了MapMatrix相
  • 关于md文件插入视频链接的方法。(亲测可用)

    md文件中插入了HTML5的代码 如下
  • 【计算机基础知识9】前端设计模式与常见类型

    目录 一 前言 二 设计模式的基本概念和原则 三 创建型设计模式 四 结构型设计模式 五 行为型设计模式 六 MVC和MVVM框架中的设计模式 七 实际应用案例分析 一 前言 在软件开发领域 设计模式是一种解决常见问题的最佳实践 它可以帮助
  • Sqlalchemy join连表查询

    摘要1 https blog csdn net weixin 33804582 article details 92471702 摘要2 https www cnblogs com juandx p 5442752 html 摘要3 htt
  • RFID服装管理系统改善零售供应链

    随着时尚零售业的竞争日益激烈 RFID技术正快速地改变着服装管理的方式 我们将探讨RFID服装管理系统的核心优点 以及如何在零售供应链中充分利用它 首先 让我们了解一下RFID技术是什么 RFID是一种无线通信技术 通过使用RFID标签和R
  • 人机博弈-吃子棋游戏(二)算气

    算法过程如下 输入计算棋气的起始子 检查我方棋子其周边的空白 并查看此空白是否已经计算过气了 如果没有计算过气加一 如果已经计算则略过 进而递归调用计算我方棋子上下左右子的气 最后算法会返回棋串的子数和气数 算法注释十分详尽 这个计算棋子气
  • linux中Shell历史命令记录文件的路径是什么

    Bash shell在 bash history 表示用户目录 文件中保存了500条使用过的命令 这样能使你输入使用过的长命令变得容易 每个在系统中拥有账号的用户在他的目录下都有一个 bash history 文件 bash shell应该
  • shell变量的设置规则

    1 变量设置规则 2 变量赋值与运算 1 变量赋值 name lbg 等号前后不能有空格 name Lebron James 变量值中有空格要用双引号 echo n a m e 用 name