本文主要是介绍Shell编程规范与变量:基本操作、read输入、作用范围、运算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1. 变量及其基本操作
- 变量值
- 自定义变量
- 赋值时使用引号
- 弱引用和强引用
- 2. 读取用户输入
- read命令获取输入内容
- 数组输入
- 3. 变量作用范围
- 局部变量与全局变量
- 环境变量
- 4. 变量的数学运算
- 整数运算
- 非整数运算
- bc与标准输出
- 自增自减
1. 变量及其基本操作
变量值
变量值是能够根据用户设置或系统环境的变化而变化的数据。例如:int
、string
、布尔
、浮点
等。
自定义变量
自定义变量是由用户自己定义、修改和使用的变量。
-
定义新的变量
格式:
变量名=变量值
变量命名规则:以字母或下划线开头,区分大小写。
示例:
product=benet version=6.0 name="zhang san"
-
查看变量的值
格式:
echo $变量名
示例:
echo $product echo $product $version echo ${product}40
${}
是一种特殊的语法形式,用于获取变量的值或对变量进行操作。可以应用于任何变量名称,其中变量名称放在花括号中,例如${product}
。
-
只读变量
使用
readonly
命令设置只读变量。示例:
product=benet readonly product # 设置为只读变量 echo $product product=accp # 只读变量不可重新赋值 unset product # 只读变量不可删除
赋值时使用引号
-
双引号:允许通过
$
符号引用其他变量值。 -
单引号:禁止引用其他变量值,
$
视为普通字符。 -
反撇号:命令替换,提取命令执行后的输出结果,
…
和$(…)
作用相同。a=`ps -ef | grep sshd` echo $a
弱引用和强引用
- 弱引用:
"$name"
,其中的变量引用会被替换为变量值。 - 强引用:
'$name'
,其中的变量引用不会被替换为变量值,而保持原字符串。
2. 读取用户输入
read命令获取输入内容
-
-p prompt
:指定提示符,用于提示用户输入数据。 -
-a array
:将输入数据存储到一个数组中。 -
示例一:
read -p "提示信息" 变量名 echo $变量名
-
示例二:
echo -n "提示信息" read 变量名 echo $变量名
数组输入
#!/bin/bashecho "请输入一个单词: "
read -a wordsecho "输入的第一个单词是: ${words[0]}"
echo "输入的第二个单词是: ${words[1]}"
echo "输入的第三个单词是: ${words[2]}"
执行、交互输入和输出:
sh test1.sh 请输入一个单词: 123 456 789输入的第一个单词是: 123
输入的第二个单词是: 456
输入的第三个单词是: 789
3. 变量作用范围
局部变量与全局变量
-
局部变量:新定义的变量只在当前的 Shell 环境中有效。当进入子程序或新的子 Shell 环境时,局部变量将无法使用。
-
全局变量:通过
export
命令将指定的变量导出为全局变量,使其在所有的子 Shell 环境中继续使用。全局变量的主要特点:
- 全局范围: 全局变量在整个程序或脚本的各个部分都是可见和可访问的。
- 持久性: 全局变量的生命周期与程序的执行时间相同。它们在程序启动时创建,在程序结束时销毁。
- 共享性: 全局变量可以在程序的不同函数或方法之间共享数据。这样,多个函数可以使用和修改相同的全局变量。
- 潜在的副作用: 全局变量的使用可能导致副作用和潜在的复杂性。因为全局变量是可访问的,所以它们可以被任何函数修改,这可能导致程序状态的不确定性和难以调试的问题。
export 变量名 export 变量名=变量值
-
示例:
export dn=1 export dxl=2 echo $(($dn + $dxl)) # 输出 3
环境变量
-
环境变量由系统维护,用于设置工作环境。系统级环境变量对所有用户可见,用户级环境变量只对当前用户可见。
-
配置文件:
-
全局配置文件(/etc/profile):在此文件中定义的变量作用于所有用户。
-
用户配置文件(~/.bash_profile):每个用户的独立配置文件,可以用来长期变更或设置某个环境变量。
-
示例:
vim /root/.bash_profile export HISTSIZE=200 # 修改root用户的历史命令记录条数echo $HISTSIZE source /root/.bash_profile # 读取并执行文件中的设置 echo $HISTSIZE# 这个profile里面声名两个全局变量,直接在脚本中引用
-
-
常见的环境变量:
$USER # 用户名称 $HOME # 用户的宿主目录 $LANG # 语言和字符集 $PWD # 当前所在的工作目录 $PATH # 可执行程序的默认搜索路径
-
示例:
echo $PATH PATH="$PATH:/root" export PATH="$PATH:/root"
-
4. 变量的数学运算
整数运算
-
格式:
expr 变量1 运算符 变量2 [运算符 变量3]
-
运算符:
+
(加法)、-
(减法)、 `\*`
(乘法)、/
(除法)、%
(取余) -
示例:
expr 12 \* 5
-
常用的运算表达式:
i=$(expr 12 \* 5) i=$((12*5)) i=$[12*5] #这种用法已弃用 let i=12*5
非整数运算
-
bash
不支持浮点运算,需借助bc
或awk
处理。 -
bc 示例:
#加 f=$(echo "4.3+2.5"|bc) echo "4.3+2.5=$f"#减 f=$(echo "4.3-2.5"|bc) echo "4.3-2.5=$f"#乘 f=$(echo "4.30*2.50"|bc) echo "4.3*2.5=$f"#除 f=$(echo "scale=2;4.3/2.5"|bc) echo "4.3/2.5=$f"#混合运算 f=$(echo "2.2/(2.2-1.1)*2+1.1"|bc) echo "2.2/(2.2-1.1)*2+1.1=$f"
-
awk 示例:
#加 f=$(awk 'BEGIN{print 4.5+3.4 }') echo "4.5+3.4=$f"#减 f=$(awk 'BEGIN{print 4.5-3.4 }') echo "4.5-3.4=$f"#乘 f=$(awk 'BEGIN{print 4.5*3.4 }') echo "4.5*3.4=$f"#除 f=$(awk 'BEGIN{print 4.5/3.4 }') echo "4.5/3.4=$f"#混合 f=$(awk 'BEGIN{print (4.5-3.4)*2+3 }') echo "(4.5-3.4)*2+3=$f"
bc与标准输出
-
bc是一个简单易用的计算器程序,可以用于执行基本的数学运算,包括加、减、乘、除和取余等操作。
-
在Shell编程中,可以使用bc命令将数学表达式计算结果输出到标准输出或保存到文件中,以满足不同的需求。
-
示例:
echo 2*2 | bc 4 echo 4^2 | bc 16
自增自减
- i++ 先赋值再加1,i=1+1,相当于 i= ( ( (( ((i+1))
- ++i 加后再赋值1,1+1=2 2+1=3
- i-- 相当于 i= ( ( (( ((i-1))
- i+=2 相当于 i= ( ( (( ((i+2))
这篇关于Shell编程规范与变量:基本操作、read输入、作用范围、运算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!