2.变量和运算
变量
简介
- 变量是用来存储数据值的容器,变量可以存储各种类型的数据,包括文本字符串、数字、文件名等。
示例:
name="John"
age=25
path_to_file="/home/user/documents/example.txt"
变量的常见类型
- 自定义变量
- 作用范围仅在当前 shell 中有效
- 不允许数字命名, 不能使⽤“-”命名
- 系统环境变量
- 位置参数变量
- 预先定义变量
自定义变量量
定义变量
变量名=变量值
引⽤用变量
$变量名 或 ${变量名}
查看变量
echo $变量名
set显示所有变量 #包括⾃自定义变量和环境变量
取消变量
unset 变量量名
系统环境变量
3.查看变量量 echo $变量量名 set显示所有变量量,包括⾃自定义变量量和环境变量量 4.取消变量量 unset 变量量名 作⽤用 范围:仅在当前 shell 中有效
定义环境变量量
本地变量(Local Variables)
- 本地变量在脚本中定义,并且只在脚本的特定部分或函数中有效。
- 不能被其他脚本或函数访问。
function example_function {
local local_var="This is a local variable."
echo $local_var
}
全局变量(Global Variables)
- 在整个Shell会话中都可见的变量。
- 全局变量通常在脚本的最外层定义,可以被脚本中的任何地方访问。
global_var="This is a global variable."
环境变量(Environment Variables)
- 环境变量是在Shell启动时设置的,对所有子进程和脚本可见。
- 通常以大写字母命名。
export PATH="/usr/bin:/bin:/usr/local/bin"
位置参数(Positional Parameters)
- 位置参数是脚本或函数中传递的参数,以
$1、$2等形式引用。 - 它们表示传递给脚本或函数的参数值。
echo "First argument: $1"
特殊参数
$0:- 表示脚本或命令本身的名称。
- 在脚本中,这通常用于获取脚本的名称。
$?:- 表示上一个命令的退出状态。
- 通常,0 表示成功,而其他非零值表示出现错误。
$!:- 表示后台运行的最后一个作业(进程)的PID(进程ID)。
$$:- 表示当前Shell脚本或命令的进程ID。
$*:- 表示所有的位置参数,以一个单字符串显示,用空格分隔。
- 例如,
"$*"等价于"$1 $2 $3 ..."。
$#:- 表示传递给脚本或函数的参数个数。
$@:- 表示所有的位置参数,以一个字符串显示,每个参数用引号括起来,以保留参数中的空白字符。
- 例如,
"$@"用于传递所有参数给其他命令。
示例:
#!/bin/bash
echo "Script Name: $0"
echo "Number of arguments: $#"
echo "All arguments as a single string: $*"
echo "All arguments as separate strings: $@"
echo "Exit status of the last command: $?"
echo "Process ID of the current script: $$"
# Run a command in the background
sleep 5 &
echo "PID of the last background command: $!"
# Example function with arguments
function example_function {
echo "Function Name: $FUNCNAME"
echo "Number of arguments within the function: $#"
echo "All arguments within the function as a single string: $*"
}
# Call the function with arguments
example_function arg1 arg2 arg3
数组(Arrays):
- 数组用于存储一系列值,可以是数字、字符串等。
- Shell默认将所有变量视为字符串。
- 数组的索引通常从0开始。
my_array=("value1" "value2" "value3")
定义变量
通常使用等号 来进行赋值
variable_name=value
- 变量的命名是区分大小写的,并且通常使用大写字母来表示。
- 给变量赋值时,等号两侧不能有空格。
# 定义字符串变量
name="John"
# 定义整数变量
age=25
# 定义浮点数变量
temperature=98.6
# 定义数组变量
my_array=("value1" "value2" "value3")
# 定义命令输出作为变量值
current_date=$(date)
使用变量
引用变量
在变量名前加上 $符号来引用它。
name="zhangsang"
age=25
echo "My name is $name and I am $age years old."