Shell基础:变量类型 & 运算符
Shell变量
Shell支持三种类型的变量
- 用户自定义变量:用户自定义的变量,变量名以英文字母或下划线开头,区分大小写。
- 位置变量:根据位置传递参数给脚本的变量,默认支持9个位置变量 $1,$2,$3...$9
- 预定义变量: 预定义的特殊变量,只能使用,不能修改
用户自定义变量
#定义变量:变量名=变量值, 可以使用"常量/其他变量/命令执行结果"赋值
var1='test var'
var2="test variable $var1"
var3=`date` #单引号中将$就当作$, 不识别$为特殊符号,不能引用起他变量
echo 'the price is $100' #双引号中可以通过$来引用变量,但无法解析转义符号,要解析转义符和字体格式需要在echo命令前加-e 参数
echo "test /n test"
echo -e "test /n test" #`` 反引号可以运行完其中的脚本命令然后赋值给相应的变量,如下执行结果会打印出123.sql的结果和当前日期
str=`cat 123.sql`
strdate=`date`
echo "$str $date` #使用变量:$变量名
echo "$var $var1" #变量后直接连接字符串需要用{}隔开使得变量可识别
echo "测试变量${var}test" # 清除变量
unset var1
位置变量
新建根据参数执行数据库命令脚本
#!/bin/bash
#mysql.sh conn="/usr/local/mysql/bin/mysql -uroot -p123" case $1 in
select)
sql="select * from test.user"
;;
delete)
sql="delete from test.user where id =$2"
;;
insert)
sql="insert into test.user(uname,psd) values('$2','$3')"
;;
update)
sql="update test.user set uname='$3', psd='$4' where id='$2'
;;
esac $conn -e "$sql"
运行脚本,以空格为分隔符输入不同个数的参数
#显示test数据库下user表的所有数据
./mysql.sh select
#删除指定id的用户
./mysql.sh delete 4
#插入新用户
./mysql.sh insert newuser newpsd
#更新id=2用户属性
./mysqlsh update 2 newuser2 newpsd2
预定义变量
Shell脚本支持四种形式的预定义变量:
- $#: 所有位置参数的个数
- $*: 所有位置参数的内容
- $0: 当前执行的脚本名(程序或者是进程名)
- $?: 上一条命令执行的状态,为0代表执行成功,为其他数字(eg:127...)代表执行失败
!/bin/bash
#test pre-defined bash variable
echo "当前脚本的位置参数有${#}个"
echo "当前正在执行的脚本名称是: $0" if[ [ $? == ] ];then
echo "上条命令执行成功"
else
echo "上条命令执行失败"
fi for i in $*; do
echo "位置变量为 $i"
done
运算符
Shell是脚本语言,变量没有区分类型,程序在实际运行的时候根据上下文做类型判断,默认的类型是String,如果需要把变量看作Int类型来进行加减乘除运算,需要采用特殊语法。
- $((变量1运算符1变量2运算符2变量3)) : 此种方式用的较多, eg: $((2+3+4)); $((2*3))
- expr 变量1 运算符 变量2 运算符 变量3 :变量和运算符之间一定要用空格隔开,此种方法比较少用, 并且乘法要用转移\*, eg: expr 2 + 3 + 4; expr 2 \* 3
Shell常用运算符
- +
- -
- *
- /
- %
Shell基础:变量类型 & 运算符的更多相关文章
- typescript学习笔记(一)---基础变量类型
作为一个前端开发者,学习新技术跟紧大趋势是必不可少的.随着2019年TS的大火,我打算利用一个月的时间学习这门语言.接下来的几篇文章是我学习TS的学习笔记,其中也会掺杂一些学习心得.话不多说,先从基础 ...
- python基础 - 变量与运算符
变量与运算符 变量 定义一个变量 a = [1,2,3,4,5,6] print(a) # [1,2,3,4,5,6] 变量命名要求: 首字母不能是数字 只能包含字符数字下划线 不能是关键字 type ...
- [shell基础]——变量
变量的赋值 #定义变量,注意等号两边没有任何空格 variable=#定义环境变量export variable= #双引号:可含空格.可转义特殊字符 variable=" " # ...
- JS基础-变量类型和类型转换
JS 变量类型 JS中有 6 种原始值,分别是: boolean number string undefined symbol null 引用类型: 对象 数组 函数 JS中使用typeof能得到哪些 ...
- Go-语言基础-变量-类型-函数
第一个程序 //单行注释 /* 多行注释 */ package main // 表示当前go文件属于main包 import "fmt" // 导入包 //编译型语言需要有一个入口 ...
- 黑马程序员——C语言基础 变量类型 结构体
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)变量类型 1)局部变量 1> 定义:在函数内部定义的变量,称为 ...
- shell基础——变量定义
快速参考: 变量定义格式: 变量名=值 str1="hello world" # define a string var str2=hello # define a string ...
- Linux基础之-shell script(变量,运算符,流程控制,函数)
一.shell script Shell 脚本(shell script),是一种为shell编写的脚本程序.业界所说的shell通常都是指shell脚本,但读者朋友要知道,shell和shell s ...
- shell基础--变量的数值计算
变量的数值计算 1.$((表达式)) (1).实验1 [root@~_~ day4]# cat test.sh #!/bin/bash a=6 b=2 echo "a-b=$(($a-$b) ...
随机推荐
- (1)建立一个名叫Cat的类: 属性:姓名、毛色、年龄 行为:显示姓名、喊叫 (2)编写主类: 创建一个对象猫,姓名为“妮妮”,毛色为“灰色”,年龄为2岁,在屏幕上输 出该对象的毛色和年龄,让该对象调用显示姓名和喊叫两个方法。
package lianxi; public class Cat { String Name, Color; int Age; void getName() { System.out.println( ...
- UVA 442 二十 Matrix Chain Multiplication
Matrix Chain Multiplication Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %l ...
- [HDU5727]Necklace(二分图最大匹配,枚举)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5727 题意:有N个阴珠子和N个阳珠子,特定序号的阴阳珠子放在一起会让阳珠子暗淡.现在问排放成一个环,如 ...
- Python学习遇到的问题
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position
- centos下安装nginx和php-fpm
安装这两个花了大约七个小时,简直呵呵,安装nginx就是直接 yum install nginx ,但发现一打开php文件就是直接下载该php文件,也就是不能识别php文件,解决这个花了好久,但其实看 ...
- linux下文件系统类型的学习
1. 以超级用户权限登陆Linux,进入 /lib/modules/2.6.32--504.el6.x86_64/kernel/fs目录执行 ls 命令(不同Linux发行版本的Fs目录有些不同你可 ...
- 装了maven插件的eclipse中M2_REPO无法编辑、删除(转)
今天用了新版本的eclipse,用maven在命令行生成了一个普通项目.导入eclipse之后发现本地仓库的路径不正确. 显示的为 user.path/.m2/repository 但是我的仓库早已经 ...
- 用Java集合中的Collections.sort方法对list排序的两种方法
用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- 9月java货车版速记
运算符的优先级java自带的方法正则表达式数组和二维数组:数组遍历,填充数组,数组排序,复制数组,数组查询数组算法:冒泡,选择,反转,快速类和对象:封装,继承,多态,this关键字,抽象类和接口重写和 ...
- supervisord
[简介] supervisord的官网:http://supervisord.org.看懂英文的可以不用看我的博客,直接看文档就行了,文档写得非常好.点个赞!! Supervisor是一个客户/服务器 ...