Shell总结02-shell变量、赋值与替换
变量
shell并不区分变量的类型,或者说变量都是弱类型的,本质上都是字符串,但是如果变量值中只含有数字,shell还是支持对其进行算术运算
赋值
常见的赋值操作符有=(在其前后没有空白符)和let
# let 赋值
a=123
let b=a+1
echo "value of a is $b" #value of a is 124
# = 赋值
a="hello world"
echo "${a}" #hello world
# in 赋值
for var in 7 8 9 11
do
echo "$var"
done
# read 赋值
echo "Please input value for a "
read a
echo "The value of a is $a."
# 命令赋值
dir=`pwd`
dirs=`ls -l`
R=$(cat /etc/redhat-release)
arch=$(uname -m)
# 1 let 可以对纯数字的变量进行简单的算术运算
# 2 = 绝大多数赋值由=完成,但是=也有比较是否相等的功(-eq),建议条件判断时候用-eq
# 3 in 赋值表达式类似python循环中的表达式
# 4 read 赋值常用在交互场景获取标准输入值
# 5 命令赋值中的反引号:`cmd`与$(cmd) 功能类似,都是命令替换的作用
引用与替换
value='l i n u x'
VAR_A=value
VAR_B=$value
VAR_C=${value}
VAR_G="value"
VAR_H="$value"
VAR_I="${value}"
VAR_D='value'
VAR_E='$value'
VAR_F='${value}'
echo VAR_A #value
echo VAR_B #l i n u x
echo VAR_C #l i n u x
echo VAR_G #value
echo VAR_H #l i n u x
echo VAR_I #l i n u x
echo VAR_D #value
echo VAR_E #$value
echo VAR_F #${value}
# 1.变量赋值时候,赋值符号=的两侧不能有空格存在,如果存在shell解释器会将其解释为:命令 参数
# 2.使用单引号''时,变量只会作为字符串显示,不会发生变量替换
# 3.使用双引号""时,可以使用变量替换,引号内变量将会保留变量的空白符(VAR_H)。没有引号则会去掉重复的空格(VAR_B)
# 4.$value这种写法是${value}的简化形式,使用完整形式会让编译器跟容易识别变量范围从而更保险一些。
特殊变量
#位置参数
$0 #命令行参数:$0:脚本名称
$1, $2...$n #命令行参数,$1 第一个参数,$2第二个,$9之后的参数要有大括号,如 ${10}
$* #代表所有位置参数(不包括脚本本身)
$@ #代表所有位置参数(不包括脚本本身)
$# #所有位置参数个数(不包括脚本本身)
$? #上一个指令的返回值(0成功,非0有错误)
$$ #Shell本身的PID
$! #Shell最后运行的后台进程的PID
#环境变量
#使用env或者export查看当前生效的环境变量,export可以将其环境变量导出到子进程,反之则不行
Shell总结02-shell变量、赋值与替换的更多相关文章
- shell传参和变量赋值
1.变量赋值方式 (1)方式1--直接赋值(=) (2)方式2--read交互式赋值 (3)方式3--脚本传参赋值 2.read read -p "请输入你的名字和年龄:" nam ...
- Linux shell编程02 shell程序的执行 及文件权限
第一个shell脚本 1. shell编程的方式 交互式shell编程 非交互式shell编程:执行的语句存放到一个文件 shell脚本:可以任意文件名,建议扩展名为sh 2. ...
- LINUX SHELL 笔记 02: 变量初识
https://www.shellscript.sh/variables1.html 变量是一个可操作(读.写)的内存块的名字. 尝试-1 创建一个变量: root@iZwz:~/labs# sh m ...
- shell变量赋值 不能有空格的原因
典型例子: a=date echo $a 成立 a =date echo $a 不成立 其实原因很简单 shell在解释命令时的原则是第一个符号标记只能是程序或者命令,有空格的时候第 ...
- 小鸟初学Shell编程(六)变量赋值
变量的意义 我们在使用Linux命令或脚本的时候,会有一些输出,那么这些输出的信息可以用变量临时存储,以备我们下一条命令或脚本使用. 变量的定义 变量的定义建议用一个有意义的英文单词来代表变量,不要使 ...
- shell总结:读取文件、参数、if、分割字符串、数组长度、空文件、变量赋值、多进程、按行切割文件、查看线程
Reference: http://saiyaren.iteye.com/blog/1943207 1. Shell 读取文件和写文件 for line in $(<top30000. ...
- 02 . Shell变量和逻辑判断及循环使用
Shell变量 系统变量 在命令行提示符直接执行 env.set 查看系统或环境变量.env 显示用户环境变量,set 显示 Shell预先定义好的变量以及用户变量.可以通过 export 导出成用户 ...
- Linux Shell编程变量赋值和引用
我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): #!/bin/sh ... 注意:最好使用“! ...
- [置顶] shell变量赋值-linux
Shell变量赋值 命名须规则: 1)使用变量无需事先声明 2)首个字符必须为字母(a-z,A-Z) 3)中间不能有空格,可以使用下划线(_) 4)不能使用标点符号 5)不能使用bash里的关键字(可 ...
随机推荐
- jdk编译java文件时出现:编码GBK的不可映射字符
出现此问题的几种解决办法: 1.cmd下使用javac编译java文件 如: javac test.java 解决办法:编译时加上encoding选项 javac -encoding UTF-8 te ...
- os.walk()的实际应用
背景: 通过Mobaxterm从本地上传虹膜数据,一共79个类,每类里包含左右眼各400张数据,总共63200张,上传期间断网不确定是否传完. 思路: 1.首先遍历总类别数是否正确,若不足79,返回“ ...
- 2/3/4G网络架构
1通讯网络演进 1.1 概念名词 LTE=Long Term Evolution=长期演进, 是3GPP制定的高数据率.低时延.面向分组域优化的新一代宽带移动通信标准项目. E-UTRAN 无线接入网 ...
- 安装superset遇到的坑
实验环境:ubuntu16.04 python环境: 3.6.7 安装参考:https://superset.incubator.apache.org/installation.html 特别提醒: ...
- android小Demo--七彩霓虹灯效果
七彩霓虹灯效果,基于网上的小Demo进行修改. 在android项目values文件夹下创建文件colors.xml,配置七种颜色: <?xml version="1.0" ...
- cpprestsdk同时使用boost.asio,acceptor就一直报Invalid argument。
本文目录,首先总结问题,然后案例还原. 总结: 问题的根本在于boost.asio作为header-only库,运行程序与动态库之间容易因为版本错配而产生运行期莫名其妙的问题. cpprestsdk使 ...
- Rocket - tilelink - Nodes
https://mp.weixin.qq.com/s/KJ8pVH76rdxPOZ1vE3QlKA 简单介绍tilelink对Diplomacy Nodes的实现. 1. TLImp ...
- TCP / IP 精彩回顾-必看
TCP/IP 协议出现的原因是互联网世界各个主机作为一个个独立的个体,如何制定统一的规则让他们互相通信是达成万物互联的纽带.基于此,设定了 TCP/IP 协议来规范网络访问行为.TCP/IP 并不是一 ...
- Java实现 蓝桥杯 基础练习 数列特征
基础练习 数列特征 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 给出n个数,找出这n个数的最大值,最小值,和. 输入格式 第一行为整数n,表示数的个数. 第二行有 ...
- Java实现 蓝桥杯 算法提高 学霸的迷宫
算法提高 学霸的迷宫 时间限制:1.0s 内存限制:256.0MB 问题描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二 ...