三分钟带你入门shell,了解基础命令,立马编写shell脚本

目录

题目

一、作为程序设计的语言—shell

二、shell脚本编写规范

三、命令使用:echo、eval、exec、export、read、shift、exit(要求退出码为222)这些命令的功能,以及用例。

四、脚本执行的方式及特点:用样例验证 

五、设置vim编辑sh文件的缩进为4个空格  

六、 $#,$*,$@,$n,$?的使用 


题目

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,$?的使用

一、作为程序设计的语言—shell

Shell 不仅仅是充当用户与 UNIX 或者 localhost 交互的角色,还可以作为一种程序设计语言来使用。
通过 Shell 编程,可以实现许多非常实用的功能,提高系统管理的自动化水平。
如果有一系列经常需要使用的命令,把它存储在一个文件里, shell 可以读取这个文件并顺序执行其
中的命令,我们把这样的文件就叫 shell 脚本。 shell 脚本按行解释文件里的命令。

二、shell脚本编写规范

(1)脚本文件名应见名知意,例如 backup_mysql.sh
(2)文件开头指定脚本解释器 #!/bin/sh #!/bin/bash
(3)开头加版本特权等信息
(4)脚本中尽量不要用中文注释
(5)多使用内部命令

三、命令使用:echo、eval、exec、export、read、shift、exit(要求退出码为222)这些命令的功能,以及用例。

echo 可在屏幕上输出信息

功能:用来输出字符串或者变量

参数:

        -n:不换行输出文件内容

        -e:解析转义字符

示例:

[root@localhost day1]# echo 111;echo 222
111
222
[root@localhost day1]# echo -n 111;echo 222
111222

[root@localhost day1]# echo 111;echo 222
111
222
[root@localhost day1]# echo -n 111;echo 222
111222

eval 

命令格式: eval args
功能: shell 程序执行到 eval 语句时, shell 读入参数 args ,并将它们组合成一个新的命令,然后执行。

示例: 

[root@localhost day1]# a='data;head -1 /etc/passwd'
[root@localhost day1]# echo $a
data;head -1 /etc/passwd
[root@localhost day1]# eval echo $a
data
root:x:0:0:root:/root:/bin/bash

补充:

1、exec 命令能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行完毕后,该进程就终止了。
2、export 设置或者显示环境变量
3、read 命令可从标准输入读取字符串等信息,传给 shell 程序内部定义的变量。
        -p prompt:设置提示信息
        -t timeout:设置输入等待时间,单位默认为秒
5、exit ,退出 shell 程序。在 exit 之后可以有选择地指定一个数作为返回状态

export 

        设置或显示环境变量

示例1:

[root@localhost day1]# export
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/0/bus"
declare -x DISPLAY="localhost:10.0"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
...

示例2:

[root@localhost day1]# a=123456    //定义变量a
[root@localhost day1]# export a    //把a变为环境变量
[root@localhost day1]# b=0         //定了变量b,但不成为环境变量
[root@localhost day1]# bash        //进入到一个子进程
[root@localhost day1]# echo $a     //输出a变量值
123456
[root@localhost day1]# echo $b     //变量b没有值

[root@localhost day1]# unset a     //删除变量a
[root@localhost day1]# echo $a

[root@localhost day1]# 

示例3: 

        使用export和declare命令来定义环境变量,针对root用户的所有连接:root_data=root,针对所有用户的变量: all_data=all


[root@localhost day1]# all_data=all
[root@localhost day1]# read_data=root
[root@localhost day1]# export read_data
[root@localhost day1]# declare -x all_data 
[root@localhost day1]# env    //查看所有环境变量
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44.....
[root@localhost day1]# declare     //查看变量
quote () 
{ 
    local quoted=${1//\'/\'\\\'\'};
    printf "'%s'" "$quoted"
}
....

read 

功能: 从标准输入内容中读取字符串等信息,并传递给shell内部定义的变量

参数:
   
 -p:设置提示信息

     -t:设置等待时间,默认单位为秒

示例:

[root@localhost day1]# read -t 10 -p "please input your name: " name
please input your name: zhangsan
[root@localhost day1]# echo $name 
zhangsan

读取俩个变量,name1,name2,其中name1包含空格
[root@localhost day1]# read name1;read name2
Fat cat
Tom
[root@localhost day1]# echo $name1
Fat cat
[root@localhost day1]# echo $name2
Tom

shift 

在程序中每使用一次shift语句,都会使所有的位置参数依次向左移动一个位置,并使位置参数$#1,直到减到0为止。

[root@localhost day1]# vim a.sh
//内容如下
#!/bin/bash
shift
echo $@
[root@localhost day1]# bash a.sh 11 22 33 44
22 33 44

exit

退出shell程序。在exit之后可以有选择地指定一个数作为返回状态

示例: 


[root@localhost day1]# vim b.sh 
#!/bin/bash
echo "abc"
exit 222    
echo "mm21"
[root@localhost day1]# echo $?    
222                            //并没有执行后面的命令
[root@localhost day1]# 

四、脚本执行的方式及特点:用样例验证 

(1)交互式执行
示例: 
[root@localhost day1]# for i in `ls /etc`
> do
> if echo "$i" | grep "passwd"
> then
> echo "$i"
> fi
> done
(2)作为程序文件执行(常用)
对于一组需要经常重复执行的 Shell 语句来说,将它们保存在一个文件中来执行。

示例:

[root@localhost day1]# vim work1.sh
#!/bin/bash
for i in `ls /etc`
do
  if echo "$i" | grep "passwd"
  then
    echo "$i"
  fi
done

五、设置vim编辑sh文件的缩进为4个空格  

[root@localhost ~]# vim .vimrc 
set tabstop=4
[root@localhost ~]# source .vimrc

六、 $#,$*,$@,$n,$?的使用 

许多情况下, Shell 脚本都需要接收用户的输入,根据用户输入的参数来执行不同的操作。
从命令行传递给 Shell 脚本的参数又称为位置参数, Shell 脚本会根据参数的位置使用不同的位置参数变量读取它们的值。
$#:
命令行参数的个数
$*:
" 参数 1 参数 2 参数 3…" 的形式返回所有参数的值
$@:
参数 1”“ 参数 2”“ 参数 3”… 的形式返回所有的值
$?:
前一个命令或者函数的返回状态码。 $? 的返回值用法:(1)判断命令、脚本或函数等程序
是否执行成功(2)若在脚本中调用执行 “exit 数字 ,则会返回这个数字给 “$?” 变量(3)如
果是在函数里,则通过 “return 数字 把这个数字以函数值的形式传给 “$?”
$n:
表示传递给脚本的第 n 个参数,例如 $1 表示第一个参数, $2 表示第二个参数, $3 表示第三
个参数
$0:
当前脚本的名称
$$:
返回本程序的进程 ID PID ),不常用
$!:
获取上一个在后台工作的进程的进程号,不常用
$_:
保存之前执行的命令的最后一个参数,不常用

示例: 

[root@localhost day1]# vim a.sh
#!/bin/bash
echo $#
echo $*
echo $@
echo $1
[root@localhost day1]# bash a.sh aa bb cc
3
aa bb cc
aa bb cc
aa
[root@localhost day1]# echo $?
0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值