Shell学习的几个习题(变量篇)

1、什么是shell变量

shell变量是用一个固定的字符串去表示不固定的内容

2、变量有哪些类型

1. 自定义变量
定义变量: 变量名=变量值 变量名必须以字母或下划线开头,区分大小写
ip1=192.168.1.1
引用变量: $变量名 或 ${变量名}
查看变量: echo $变量名 set(所有变量:包括自定义变量和环境变量)
取消变量: unset 变量名
作用范围: 仅在当前 shell 中有效
2. 环境变量
定义环境变量: 方法一 export back_dir2=/home/backup 
方法二 export back_dir1 将自定义变量转换成环境变量
引用环境变量: $变量名 或 ${变量名}
查看环境变量: echo $变量名 env 例如 env |grep back_dir2
取消环境变量: unset 变量名
变量作用范围: 在当前 shell 和子 shell 有效
3. 位置变量
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
用法 脚本后面加参数,脚本中直接使用$1
4. 预定义变量
$0 脚本名
$* 所有的参数
$@ 所有的参数
$# 参数的个数
$$ 当前进程的 PID
$! 上一个后台进程的 PID
$? 上一个命令的返回值 0 表示成功

3、变量的定义方式

1、显式赋值
变量名=变量值
示例:
ip1=192.168.1.251

2、read从键盘输入
read -p "提示语: "  test  
#test为变量名

4、变量的计算

1、整数运算
expr 1 + 1 
# 两个参数中间有空格
# expr 乘法使用方法和加减除不一致 要加上\ 如 expr 5 \* 2
echo $(($num1+$num2)) 
echo $[5**2]
let sum=2+3; echo $sum
2、小数运算
echo "2.0*4.2" |bc
echo "2.5^4" |bc
echo "scale=2;6/4" |bc
# scale=2 代表设置两位小数

5、printf格式化输出文本颜色

printf "\e[34m Hello World\n"
#\e 为转义符 [34m 为颜色 hello world 为要输出的话 
#补充
echo -e "\033[40;34m Hello World"
\033 和 \e 意思相同
\33[0m 关闭所有属性 
\33[1m 设置高亮度
\33[4m 下划线 
\33[5m 闪烁 
\33[7m 反显 
\33[8m 消隐 
\33[30m -- \33[37m 设置前景色(字体色)
30:黑 31:红     32:绿 33:黄    34:蓝色 35:紫色 36:深绿 37:白色
\33[40m -- \33[47m 设置背景色               
40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色
\33[nA 光标上移n行 
\33[nB 光标下移n行 
\33[nC 光标右移n行 
\33[nD 光标左移n行 
\33[y;xH设置光标位置 
\33[2J 清屏 
\33[K 清除从光标到行尾的内容 
\33[s 保存光标位置 
\33[u 恢复光标位置 
\33[?25l 隐藏光标 
\33[?25h 显示光标

6、$ @和$*有什么区别?

不加“”时 $@ 和$* 没有区别,加上“”变成“$@”,"$*";$* 会把所有的参数当成整体输出,$@还是会单独输出每一个参数

7、如何给变量设置默认值

${变量名-新的变量值}
变量没有被赋值:会使用“新的变量值“ 替代
变量有被赋值(包括空值): 不会被替代

${变量名:-新的变量值}
变量没有被赋值(包括空值):都会使用“新的变量值“ 替代
变量有被赋值: 不会被替代
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值