目录
1.命令使用:echo、eval、exec、export、read、shift、exit(要求退出码为222)
一、实验要求:
问题总览
1.命令使用:echo、eval、exec、export、read、shift、exit(要求退出码为222)
这些命令的功能,以及用例
2..使用read从标准输入读取两个变量: name1和name2, 要求name1包含空格
3.定义自定义环境变量:(使用export和declare)
针对root用户的所有连接:root_data=root
针对所有用户的变量: all_data=all
查看所有的环境变量, 查看所有变量
4.脚本执行的方式及特点:用样例验证
5.设置vim编辑sh文件的缩进为4个空格
6.$#,$*,$@,$n,$?的使用
二、实验操作:
1.命令使用:echo、eval、exec、export、read、shift、exit(要求退出码为222)
echo:echo可在屏幕上输出信息
[root@localhost test]# a=tuerqi
[root@localhost test]# echo $a
tuerqi
eval:”命令格式:eval args
功能:当 shell 程序执行到 eval 语句时, shell 读入参数 args ,并将它们组合成一个新的命令,然后执行。[root@localhost tuerqi]# a='yq;head tuerqi'
[root@localhost tuerqi]# echo $a
yq;head tuerqi
[root@localhost tuerqi]# eval echo $a
yq
first day
hello world!
how are you?
ps :提前写一个tuerqi的文件[root@localhost tuerqi]# cat tuerqi
first day
hello world!
how are you?
exec:
exec 命令能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行完毕后,该进程就终止了。![]()
export:设置或者显示环境变量
read: 命令可从标准输入读取字符串等信息,传给 shell 程序内部定义的变量。-p prompt :设置提示信息-t timeout :设置输入等待时间,单位默认为秒[root@localhost test]# read -t 100 -p "input name1 and name2:" name1 name2
input name1 and name2:Jack\ chen Yang qi
[root@localhost test]# echo $name1
Jack chen
[root@localhost test]# echo $name2
Yang qi
shift:在程序中每使用一次shift语句,都会使所有的位置参数依次向左移动一个位置,并使位置参
数 $# 减 1 ,直到减到 0 为止。![]()
exit:退出shell程序。在exit之后可以有选择地指定一个数(222)作为返回状态

2.使用read从标准输入读取两个变量: name1和name2, 要求name1包含空格
3.定义自定义环境变量
自定义环境变量:一般是指用 export 内置命令导出的变量,用于定义 shell 的运行环境,保证 shell 命令的正确执行。 环境变量可以在命令行中设置和创建,但用户退出命令行时这些变量值就会丢失 ,即该环境变量只在当前shell和子 shell 中有效。如果希望永久保存环境变量,可以在配置文件中设置。①用户的环境变量配置( non-login shell )~/.bash_profile 或 ~/.bashrc②全局环境变量的配置( login shell )/etc/bashrc 、 /etc/profile 文件或者 /etc/profile.d 目录中定义。
针对root用户的所有连接:root_data=root
在~/.bashrc 下自定义变量
[root@localhost test1]# vim ~/.bashrc
针对所有用户的变量: all_data=all
在/etc/bashrc 下自定义变量
vim /etc/bashrc
查看所有的环境变量, 查看所有变量
export
declare
4.脚本执行的方式及特点:用样例验证
1bash ./filename.sh
使用指定的shell去运行
没有权限也可以运行
产生子进程
(2)./filename.sh
使用默认的shell去运行
需要x权限才可以运行
产生子进程
5.设置vim编辑sh文件的缩进为4个空格
在~/.vimrc下添加
set tabstop=4
如图:
6.$#,$*,$@,$n,$?的使用
$#
$*和$@
当被双引号包围时,$@与没有被双引号包围时没有变化,每个参数依然是独立的。但是$*被双引号包围时,会将所有参数看作一个整体。下面两段代码的结果是不同的。
$n
显示第几个参数
$?
显示返回值
除0意外的返回值都是异常返回