Shell脚本学习笔记-变量使⽤及输⼊输出
1. 变量的定义
1.1 变量名可以由字母、数字、下划线组成,但数字不能作为变量名的第⼀个字符。
1.2 通过赋值符号“=”来定义变量的值,e.g:
myname='test', 字符串类型,不解析任何字符
myname="abcd", 双引号内部会解析$和反斜杠特殊字符
num=100; price=1.2345
now_date=`date`, 反引号会执⾏系统命令。
2. 变量的引⽤
2.1 使⽤美元符号$加变量名,来引⽤⼀个变量的值,e.g:
定义变量:test = "hello demo", 输出变量:echo $test
2.2 变量名外⾯的花括号, 主要是为了帮助解释器识别变量的边界,e.g.:
language = 'Java' echo "I am a ${language}Coder", 在这种情况下,如果不加花括号,解释器会误以为是饮⽤lanuageCoder这个变量的值,⽽导致出错。
3. 简单⽰例:
4. 环境变量
4.1 环境变量是指在操作系统中⽤来质地ing操作系统运⾏环境的⼀些参数,e.g. PATH等。
4.2 常见的环境变量:
PATH: 系统路径
HOME: 当前⽤户家⽬录
HISTSIZE: 保存历史命令纪录的条数
LOGNAME: 当前⽤户登录名
HOATNAME: 主机名称
SHELL: 当前⽤户⽤的是哪种shell
LANG: 和语⾔相关的环境变量
MAIL: 当前⽤户的邮件存放⽬录
4.3 查看环境变量:
env: 显⽰所有环境变量
5. 局部变量
5.1 在shell脚本中由⽤户⾃定义的变量:作⽤域为从被定义的地⽅开始,到shell脚本结束为⽌,起作⽤域为本脚本,离开本脚本,变量⽆效,e .g.:
编写⼀个脚本,定义⼀个变量,输出结果,退出脚本,再输出这个变量,将看不到结果:
5.2 在⽤户登录的shell中定义的变量,重新登录后该变量消失,e.g.
6. 预定义变量
6.1 预定义变量和环境变量类似,也是在shell⼀开始就定义了的变量。不同的是,⽤户只能根据shell的定义来使⽤这些变量,⽽不能重定义它。所有的预定义变量都是由$符和另⼀个符号组成的。
6.2 常⽤的shell预定义变量:
$#: 位置参数的数量
$*: 所有位置参数的内容
$?: 命令执⾏后返回的状态,0表⽰成功,⾮0表⽰失败
$$: 当前进程的进程号
$!: 后台运⾏的最后⼀个进程号
$0: 当前执⾏的进程名
6.2 简单⽰例:
7. 输出与输⼊
7.1 echo命令发送数据到标准的输出设备,数据采⽤的是字符串⽅式,echo中有两个重要参数:
-e: 识别输出内容⾥的转义序列,e.g. echo -e "hello\tworld"
-n: 忽略结尾的换⾏, e.g:echo -e -n "hello\tworld"
7.2 printf命令和echo的功能类似,printf也可以输出变量,⽽且可以按照格式输出变量,不过printf的默
认输出没有换⾏,换⾏需要⾃⼰加“\n”,e.g:
7.3 read命令读取标准输⼊设备的下⼀⾏,标准输⼊中的新⼀⾏到换⾏符前的所有字符都会被读取,并赋予给对应的变量,e .g.:
7.4 "<<" 是⼀种重定向符,重定向脚本⽂件中的⼀⾏作为到⼀个命令的输⼊,操作符 <<;被放在输⼊重定向的命令之后,紧跟<<;的各⾏作为命令的输⼊,输⼊的结尾通过⽂件结束符(ctrl+D)表⽰,也可以⾃⼰定义定界符,定界符后的单词作为输⼊各⾏结束的定界符,另外定界符需要顶格写,e.g. 通过脚本⾃动连接ftp服务器来下载数据:
#!/bin/sh
ftpserver=127.0.0.1
ftp -i -n <<! #!为定界符
open $ftpserver
usr account password #具体的操作账号和密码
cd testdir
bin
bye
!
shell最简单脚本
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论