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) ...
随机推荐
- Spring 框架 详解 (四)------IOC装配Bean(注解方式)
Spring的注解装配Bean Spring2.5 引入使用注解去定义Bean @Component 描述Spring框架中Bean Spring的框架中提供了与@Component注解等效的三个注 ...
- BZOJ 2229 最小割
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2229 题意:给定一个带权无向图.若干询问,每个询问回答有多少点对(s,t)满足s和t的最 ...
- linux系统:rm-rf执行以后,怎么办?我来教你恢复文件。
记得我当时也犯过这个错误 rm -rf /* 傻傻的盯着屏幕看... 还好当时是在自己的虚拟机里,没什么数据,打镜像恢复回来就好了.今天看到这篇文章,备用!嗯 是的 万一哪天脑抽了 --------- ...
- Java——Java日期转Sql日期
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public cl ...
- hdu 5673 Robot 卡特兰数+逆元
Robot Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem D ...
- js 小数相加异常
var a = 0.1; var b = 0.2; a + b//0.30000000000000004 这个bug可能是因为二进制计算溢出导致的. 解决办法:将小数转换为整数进行计算 计算后结果除以 ...
- [转]-Gradle使用手册(一):为什么要用Gradle?
原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1. ...
- windows git的安装配置(转)
Win7上Git安装及配置过程 http://www.cnblogs.com/sunny5156/archive/2012/10/23/2735799.html 对于需要使用Putty登录的参见 ...
- iOS - Swift NSRect 位置和尺寸
前言 结构体,这个结构体用来表示事物的坐标点和宽高度. public typealias NSRect = CGRect public struct CGRect { public var origi ...
- c++ 复习练习
复习c++的时候,发现一篇 如何通过c++ primer学习c++的好文,并列出了一些建议的练习题目. 链接,http://blog.csdn.net/solstice/article/details ...