文章目录
- 1 、shell格式化输出
- (1)echo命令
- (2)带颜色输出
- 2、shell基本输入
- (1)read命令
- 3、shell变量
- (1)变量分类
- (2)变量定义/读取
- (3)取消变量unset
- (4)定义全局变量export
- (5)定义永久变量
- (6)declare声明shell变量的类型
1 、shell格式化输出
(1)echo命令
功能:将内容输出到默认显示设备上。输出的字符串间以空白字符间隔,并在最后加上换行符
语法:echo [-ne][字符串]
命令选项:
-n 不要在最后自动换行
-e若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
转义字符:
\a发出警告声
\b删除前一个字符
\c最后不加上换行符号
\f换行但光标仍旧停留原来的位置
\n换行且光标移至行首
\r光标移至行首,但不换行
\t插入tab键
\v和\f一样
\插入\字符
示例:
root@wkr:~# echo "hello shell" #默认带换行
hello shell
root@wkr:~# echo -n "hello shell" #加-n参数,无换行
hello shellroot@wkr:~#
root@wkr:~# echo -e "hello linux"
hello linux
root@wkr:~# echo -e "\thello linux\n" #\t和\n引用示例
hello linux
root@wkr:~# echo -e "hello \blinux" #\b应用示例
hellolinux
root@wkr:~#
(2)带颜色输出
语法: echo -e "\033[背景色;字体颜色m 字符串 \033[属性效果"
背景色:
40:黑
41:红
42:绿
43:黄
44:蓝
45:紫
46:青
47:白
字体色(前景色):
30:黑
31:红
32:绿
33:黄
34:蓝
35:紫
36:青
37:白
属性效果:
0m:关闭所有属性
1m:设置高度
4m:下划线
5m:闪烁
示例:echo -e "\033[41;37m hello shell \033[0m"
2、shell基本输入
(1)read命令
功能: 默认接收键盘的输入,回车符代表输入结束
用法: read [-ptsn] 变量名
参数:
-p:后可以接提示符,打印输出
-t:后面接时长,等待的秒数
-s:不回显,例如输密码
-n:后面接个数,输入限定字符个数
示例:
root@wkr:~# read username #将读取的数据赋值给变量username
root
root@wkr:~# echo $username
root
root@wkr:~# read -p "please inout age" age #read带参数输出
please inout age56
root@wkr:~# echo $age
56
root@wkr:~# read -t3 -p "please inout age" age #read带时间参数,3s后没输入会退出
please inout ageroot@wkr:~#
root@wkr:~# read -n5 username #read带字符个数参数,限定5个字符,输第6个参数时就会退出
12345root@wkr:~#
root@wkr:~# echo $username
12345
root@wkr:~# read -s -p "please input password" passward #read不回显测试,输入密码时不会回显
please input passwordroot@wkr:~#
root@wkr:~# echo $passward
1234
下面看一个简易模拟登陆界面的脚本
#!/bin/bash
clear
echo "Welcom to Ubuntu Kernal `uname -r` an `uname -m`"
echo -n -e "$HOSTNAME Login: "
read username
read -s -p "Passward: " passward
echo ""
echo "Successful login"
echo "you name is :$username, you passward is :$passward"
3、shell变量
(1)变量分类
临时变量的作用只在当前终端或者当前脚本中有用
全局变量位置:保存在/etc/profile、/etc/bashrc文件中
局部变量位置:保存在家目录下的.bash_profile、.bashrc文件中
(2)变量定义/读取
格式: 变量名=值
注意: 在shell中变量名和等号之间不能有空格
命名规则: 只能用英文、数字和下划线。开头不能以数字开头,中间不能有空格,不能使用bash里的关键词
#!/bin/bash
name="zhang san" #定义变量
sex="m";age=18 #定义变量
echo -e "you name:$name\nyou sex:$sex\nyou age:$age" #输出变量的值
(3)取消变量unset
格式:unset 变量名
wang@ubuntu:~$ name="zhangsan"
wang@ubuntu:~$ echo $name
zhangsan
wang@ubuntu:~$ unset name #取消变量
wang@ubuntu:~$ echo $name
wang@ubuntu:~$
(4)定义全局变量export
wang@ubuntu:~$ export name="lisi"
#上述设置的变量其实都是一次性变量,重启系统就会丢失。
#如果希望本地变量或者全局变量可以永久使用,可以将需要设置的变量写入变量文件中即可
(5)定义永久变量
用户永久变量: 用户私有变量,只有本用户可以使用,保存在家目录下的.bash_profile、.bashrc文件中
全局永久变量: 所有用户都可以使用的变量,保存在/etc/profile、/etc/bashrc文件中
#例如:添加全部永久变量NAME="张三"
wang@ubuntu:~$ vim /etc/profile
在文件末尾添加:export NAME="张三" 保存退出
此时NAME变量就为全部永久变量
(6)declare声明shell变量的类型
作用: 用来声明变量并设置变量的类型属性
用法: declare [+/-][aAfFgilprx][变量名=变量值]
其中-
表示设置属性,+
表示取消属性,aAfFgilprx都是具体的选项,其含义如下
参数:
选项 | 含义 |
-a name | 声明变量为普通数组 |
-A name | 声明变量为关联数组 |
-f [name] | 列出之前由用户在脚本中定义的函数名称和函数体 |
-F [name] | 仅列出自定义函数名称 |
-g name | 在 Shell 函数内部创建全局变量 |
-i name | 将变量定义为整数型 |
-p [name] | 显示指定变量的属性和值 |
-r name[=var] | 将变量定义为只读,不可修(declare +无用),也不能设置为 |
-x name[=var] | 将变量设置为环境变量,等价于 export name[=value] |
示例
设置只读变量
[root@localhost ~]# declare -r i=10
[root@localhost ~]# echo $i
10
[root@localhost ~]# i=20 #尝试改变只读变量,报错
-bash: i: readonly variable
[root@localhost ~]# declare -p i #显示变量i的属性
declare -r i="10
声明整型变量和改变变量属性
[root@localhost ~]# declare -i var=10 #声明整型变量
[root@localhost ~]# echo $var
10
[root@localhost ~]# var=12
[root@localhost ~]# echo $var
12
[root@localhost ~]# var=1.001 #将浮点数赋值给整型变量,报错
-bash: 1.001: syntax error: invalid arithmetic operator (error token is ".0 01")
[root@localhost ~]# declare +i var #改变变量属性,将整型属性取消
[root@localhost ~]# var=1.0001
[root@localhost ~]# echo $var #成功
1.0001