美文网首页
Shell基础变量

Shell基础变量

作者: 冬月廿拾 | 来源:发表于2019-06-24 21:45 被阅读0次

变量的定义及使用

变量定义类似于python
shell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串

a="home" 
b=asdads 
c=112 
array=(1 2 3) #数组

d="hello world" #带空格需要使用单引号或双引号
e="$a"  #双引号会转义
f='${a}'   #单引号不会

###变量的使用
echo $e && echo $f
-->home 
-->${a}
echo `ls`  #输出ls执行的结果

预定义变量

echo $PATH #输出path变量
echo $PWD #输出pwd的执行结果
echo $RANDOM #随机整数
$? #最后一次执行的命令返回状态,0为成功,非0为失败
$$ #当前进程的进程号
$! #后台运行的最后一个进程的进程号

数字变量的操作

i=1
((i=i+1))  #i=2
((i+=1))  #i=3
((i=i/2))  #i=3/2=1  #不会产生小数
awk 'BEGIN{print 1/3}'  #小数运算
awk 'BEGIN{printf("%.2f\n", 1/3)}'    #格式化,保留2位小数

字符串操作

a=12345
echo ${a:4}  #获取指定位置的字符从0开始
-->5

{value:offset:length} 从变量中提取子串{#value} 字符串长度

掐头去尾与内容替换

${value#pattern} ${value##pattern} #表示掐头 
${value%pattern} ${value%%pattern} %表示去尾 
${value/pattern/string} 
${value//pattern/string} /表示替换 
#与## %与%% /与//的区别:最短匹配模式VS最长匹配模式 
${var/#Pattern/Replacement} ${var/%Pattern/Replacement}
b=asdasd
echo ${b#as}  #dasd
echo ${b##*as}  #d
echo ${b%as*}  #asd
echo ${b%%as*}  #
echo ${b/a/A}  #Asdasd

echo $b | awk '{print substr($0,2,3)}'   #sda
echo $b|sed 's#a#A#g'  #AsdAsd

布尔变量

  • true
  • false
  • 命令执行返回值 $?
    1.任何命令执行都会有一个返回值 0表示正确
    2.非0表示错误

判断的类型

  • 算术判断
  • 字符串判断
  • 逻辑判断
  • shell内置判断
算术判断
  • [ 2 –eq 2 ] 相等
  • [ 2 –ne 2 ] 不等
  • [ 3 –gt 1 ] 大于
  • [ 3 –ge 3 ] 大于等于 [ 3 –lt 4 ] 小于
  • [ 3 –le 3 ] 小于等于 (())也可以表示算术比较。((10>=8)) ,((10==10))

[ string1 = string2 ] 如果两字符串相同,则结果为真
[ string1 != string2 ] 如果两字符串不相同,则结果为真
[ -n $var ] 如果字符串不是空,则结果为
[ -z $var ] 如果字符串是空,则结果为真
[[ "xxxx" == x* ]] 在表达式中表示0或者多个字符
[[ xxx == x?? ]] 在表达式中表示单个字符

字符串比较

a=asd
b=qwe
if [ $a = $b ];then echo true;else echo false;fi   #判断相等
false
if [ $a != $b ];then echo true;else echo false;fi  #判断不等
true
if [ -z $b ];then echo true;else echo false;fi  #判断非空
false
if [[ "xxx" == x* ]];then echo true;else echo false;fi  #判断x开始的0或多个字符
true
if [[ "xxx" == x?? ]];then echo true;else echo false;fi  #判断x开始后面还有两个字符
true
if [[ "xxx" == x??? ]];then echo true;else echo false;fi
false

逻辑判断

[ 2 -ge 1 -a 3 -ge 4 ];echo $? #与
 [ 2 -ge 1 -o 3 -ge 4 ];echo $? #或
[[ 2 -ge 1 && 3 -ge 4 ]];echo $? #与 
[[ 2 -ge 1 || 3 -ge 4 ]];echo $? #或
[ ! 2 -ge 1 ];echo $? #非

内置判断

-e file 如果文件存在,则结果为真
-d file 如果文件是一个子目录,则结果为真
-f file 如果文件是一个普通文件,则结果为真
-r file 如果文件可读,则结果为真
-s file 如果文件的长度不为0,则结果为真
-w file 如果文件可写,则结果为真
-x file 如果文件可执行,则结果为真

数组变量

a=(1 2 3 45 6)
echo ${a[*]}  #输出为字符串
1 2 3 45 6
for i in "${a[@]}";do echo $i;done  输出为数组
1
2
3
45
6
for i in "${a[*]}";do echo $i;done  #输出为字符串
1 2 3 45 6

相关文章

  • Linux Shell:基础知识和Shell变量

    摘要:Linux,Shell 整理Shell内容要点: Shell基础知识 Shell变量的类型 Shell变量赋...

  • shell基础在工作中的应用

    shell编程基础:1. shell变量:环境变量、特殊变量、用户自定义变量2. shell输入输出3 shell...

  • shell变量详解

    本文转载自Hello,Barry的shell变量详解1 shell变量基础shell变量是一种很“弱”的变量,默认...

  • 07. Shell脚本变量和参数

    变量变量基础shell的变量定义同标识符的定义规则shell中,取变量的值,需要用到$符,$变量名变量的定义 变量...

  • Shell基础变量

    变量的定义及使用 变量定义类似于pythonshell 在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量...

  • shell脚本基础

    编写脚本 编程基础 shell脚本 创建shell脚本 变量 运算 测试 配置用户的环境

  • Shell脚本基础

    shell 基础 变量 $BASH_SOURCE[0]等价于 BASH_SOURCE, 取得当前执行的shell文...

  • shell(2)变量的核心基础知识与实践

    shell(2)变量的核心基础知识与实践 什么是shell变量 变量就是用一个固定的字符串(也可能是字符、数字等的...

  • shell(2)变量的核心基础知识与实践

    shell(2)变量的核心基础知识与实践 什么是shell变量 变量就是用一个固定的字符串(也可能是字符、数字等的...

  • Shell基础-Bash变量

    一、变量分类1)用户自定义变量2)环境变量3)位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不...

网友评论

      本文标题:Shell基础变量

      本文链接:https://www.haomeiwen.com/subject/qbeaqctx.html