【Linux】【Shell】【Basic】变量与数据类型

1. 变量:

 

1.1. 局部变量:作用域是函数的生命周期;在函数结束时被自动销毁;

 定义局部变量的方法:local VARIABLE=VALUE

 

1.2. 本地变量:作用域是运行脚本的shell进程的生命周期;因此,其作用范围为当前shell脚本程序文件;

 

1.3. 环境变量

 

1.4. 位置参数变量:向脚本传递参数

例如:myscript.sh  argu1 argu2

引用方式:$1,  $2, ..., ${10}, ${11}, ...,大于一位数的要用大括号引起来

轮替:shift  [n]:位置参数轮替;

练习:写一脚本,通过命令传递两个文本文件路径给脚本,计算其空白行数之和;

1
2
3
4
5
#!/bin/bash
#
file1_lines=$(grep "^$" $1 | wc -l)
file2_lines=$(grep "^$" $2 | wc -l)
echo "Total blank lines: $[$file1_lines+$file2_lines]"

  

1.5. 特殊变量

$0:脚本文件路径本身;
$#:脚本参数的个数;
$*:所有参数
$@:所有参数

2. 数据类型:

2.1. 字符型:所有变量默认都为字符型

2.2. 数值型

2.2.1. 算术运算:+, -, *, /, %, **

定义方式:

1
2
3
4
5
6
7
let  VAR=expression
 
VAR=$[expression]
 
VAR=$((expression))
 
VAR=$(expr argu1 argu2 argu3)

注意:有些时候乘法符号需要转义

 

2.2.2. 增强型赋值:变量做某种算术运算后回存至此变量中;+=,-=,*=, /=, %=

1
2
3
4
5
6
7
8
9
10
let i=$i+#
let i+=#
#自增:
VAR=$[$VAR+1]
let  VAR+=1
let  VAR++
#自减:
VAR=$[$VAR-1]
let  VAR-=1
let  VAR--

  

 

2.2.3. 判断赋值:

 

2.2.4. 练习:

 

计算/etc/passwd文件中的第10个用户和第20个用户的id号之和;

1
2
id1=$(head -10  /etc/passwd | tail -1  | cut  -d:  -f3)
id2=$(head -20   /etc/passwd | tail -1  | cut  -d:  -f3)

 

计算/etc/rc.d/init.d/functions和/etc/inittab文件的空白行数之和;

1
grep "^[[:space:]]*$"   /etc/rc.d/init.d/functions | wc -l

  

posted @   炼狱腾蛇  阅读(1610)  评论(0编辑  收藏  举报
编辑推荐:
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
阅读排行:
· 我干了两个月的大项目,开源了!
· 千万级的大表,如何做性能调优?
· 盘点!HelloGitHub 年度热门开源项目
· Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,
· 你所不知道的 C/C++ 宏知识——基于《C/C++ 宏编程的艺术》
点击右上角即可分享
微信分享提示