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)变量分类

变 量 分 类 { 全 局 边 量 : 所 谓 的 环 境 变 量 ) ) ) 本 地 变 量 : 用 户 私 有 变 量 变 量 ) ) 临 时 变 量 : 终 端 / 脚 本 中 定 义 变 量 ) 变量分类\left\{ \begin{aligned} 全局边量:所谓的环境变量)))\\ 本地变量:用户私有变量变量))\\临时变量:终端/脚本中定义变量)\end{aligned} \right. /)

临时变量的作用只在当前终端或者当前脚本中有用

全局变量位置:保存在/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 +无用),也不能设置为unset取消
-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
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值