【初学者的福音-shell的简单用法

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

Echo

在这里插入图片描述
用例:

[kiosk@foundation0 1]$ echo -n "ni hao aa"
 
ni hao aa[kiosk@foundation0 1]$
[kiosk@foundation0 1]$ echo -e "data=1;$data"
 
data=1;1

转义字符:
在这里插入图片描述

[kiosk@foundation0 1]$ echo {1..20}
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
 
[kiosk@foundation0 1]$ echo i\tlove\tyou
 
itlovetyou
 
[kiosk@foundation0 1]$ echo -e i\tlove\tyou
 
Itlovetyou
 
[kiosk@foundation0 1]$ echo "i\tlove\tyou"
 
i\tlove\tyou
 
[kiosk@foundation0 1]$ echo -e "i\tlove\tyou"
 
i      love you
 
[kiosk@foundation0 1]$ echo -e "i\blove\tyou"
 
love you
 
[kiosk@foundation0 1]$ echo -e "i\vlove\vyou"
 
i
 
 love
 
     you

eval

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

[kiosk@foundation0 1]$ a='data;tail -1 /etc/passwd'
 
[kiosk@foundation0 1]$ echo $a
 
data;tail -1 /etc/passwd
 
[kiosk@foundation0 1]$ eval echo $a
 
data
 
dhcpd:x:177:177:DHCP server:/:/sbin/nologin
 
#等价于组合
 
[kiosk@foundation0 1]$ echo "data";tail -1 /etc/passwd
 
data
 
dhcpd:x:177:177:DHCP server:/:/sbin/nologin
 
[kiosk@foundation0 1]$ echo $a | grep eval  #标准输入

Exec

exec命令能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行完毕后,该进程就终止了

[kiosk@foundation0 ~]$ cd /etc
 
[kiosk@foundation0 etc]$ ssh kiosk@172.25.254.250
 
Warning: Permanently added '172.25.254.250' (ECDSA) to the list of known hosts.
 
This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
 
To register this system, run: insights-client –register
 
 
 
Last login: Tue Aug 16 02:12:57 2022 from 172.25.254.1
 
[kiosk@foundation0 ~]$ exec cd /home/
 
Connection to 172.25.254.250 closed.

export

设置或者显示环境变量

[kiosk@foundation0 ~]$ read -p "Please input a string: " -t 5 name
 
Please input a string: tt
 
[kiosk@foundation0 ~]$ echo $name
 
Tt

Shift

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

echo $*

echo $0

echo $1

echo $2

shift

echo “***************”

echo $#

echo $@

输出 shift 向左移动一位

“” ‘’ 的区别

[kiosk@foundation0 1]$ data=1
[kiosk@foundation0 1]$ echo "$data"
1
[kiosk@foundation0 1]$ echo '$data'
$data
 
#""双引号调用data=1   ''单引号直接输出    ``执行命令
 
 
[kiosk@foundation0 1]$ data=`pwd`
 
[kiosk@foundation0 1]$ echo $data
 
/home/kiosk/wuw/1

exit(要求退出码为222)

echo “123”

exit 222

echo “456”

[kiosk@foundation0 1]$ vim hh.sh
 
[kiosk@foundation0 1]$ bash ./hh.sh
 
123
 
[kiosk@foundation0 1]$ echo $?
 
222

read

使用read从标准输入读取两个变量: name1和name2, 要求name1包含空格

read命令可从标准输入读取字符串等信息,传给shell程序内部定义的变量。

-p prompt:设置提示信息

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

[kiosk@foundation0 ~]$ echo -n "Please input your name: ";read name1 name2
 
Please input your name: one two
 
[kiosk@foundation0 ~]$ echo $name1
 
one
 
[kiosk@foundation0 ~]$ echo $name2
 
two
 
[kiosk@foundation0 ~]$  echo -n "please input your name:";read name1
please input your name:hh gg
[kiosk@foundation0 ~]$ echo $name1
hh gg

通过些.sh实现

for i in "name1 name2"
 
do
 
        echo $i
 
done
 
        echo "@@@@@@@@@@@"
 
for i in "name1" "name2"
 
do
 
        echo $i
 
done
 
        echo "@@@@@@@@@@@"

输出:

name1 name2

@@@@@@@@@@@

name1

name2

@@@@@@@@@@@

**exort和declare

定义自定义环境变量:(使用export和declare)**

     针对root用户的所有连接:root_data=root

     针对所有用户的变量: all_data=all

     查看所有的环境变量, 查看所有变量
[kiosk@foundation0 1]$ declare -x all_data=all
 
[kiosk@foundation0 1]$ root_data=root;export root_data
 
[kiosk@foundation0 1]$ echo $root_data
 
root
 
[kiosk@foundation0 1]$ vim j.sh
 
[kiosk@foundation0 1]$ sh j.sh
 
all
 
root

J.sh

echo $all_data

echo $root_data

脚本执行

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

交互式执行
(2)作为程序文件执行(常用) 对于一组需要经常重复执行的Shell语句来说,将它们保存在一个文件中来执行。我们通常称这种包 含多个Shell语句的文件为Shell脚本,或者Shell脚本文件。脚本文件是普通的文本文件,可使用任何的 文本编辑器查看或修改Shell脚本
方法:

(1)bash ./filename.sh(产生子进程,再运行,使用当前指定的bash shell去运行) (2)./filename.sh(产生子进程,再运行,使用脚本里面指定的shell去运行。使用该种方式执行需要x 权限)

(3)source ./filename.sh(source命令是一个shell内部命令,其功能是读取指定的shell程序文件,并 且依次执行其中的所有的语句,并没有创建新的子shell进程,所以脚本里面所有创建的变量都会保存到 当前的shell里面)

(4). filename.sh(和source一样,也是使用当前进程执行)

[root@localhost test]# echo 'userdir=`pwd`' > test3.sh
 
[root@localhost test]# cat test3.sh userdir=`pwd`
 
(1)[root@localhost test]# bash test3.sh
 
[root@localhost test]# echo $userdir
 
[root@localhost test]#
 
(2)[root@localhost test]# chmod a+rx test3.sh
 
[root@localhost test]# ./test3.sh
 
[root@localhost test]# echo $userdir
 
[root@localhost test]#
 
(3)[root@localhost test]# source test3.sh
 
[root@localhost test]# echo $userdir /test
 
(4)[root@localhost test]# . test3.sh
 
[root@localhost test]# echo $userdir /test

执行shell脚本时,如果使用1和2这种方式执行会在当前的进程下产生一个新的bash子进程,所以子进程 切换到了/tmp目录,当脚本结束,子进程也就结束了,所以当前进程的目录不会发生变化;3和4方式执 行时,不会产生新的进程,所以脚本执行结束后当前的目录会变成/tmp。

vim改缩进四格

设置vim编辑sh文件的缩进为4个空格
vim ~/.vimrc
autocmd FileType sh setlocal ai ts=4 sw=4 et

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

$# 命令行参数的个数
$n 表示传递给脚本的第n个参数,例如$1表示第一个参数,$2表示第二个参数,$3表示第三 个参数 $0 当前脚本的名称
$* 以"参数1 参数2 参数3…"的形式返回所有参数的值 $@ 以“参数1”“参数2”“参数3”…的形式返回所有的值 $? 前一个命令或者函数的返回状态码。
? 的返回值用法:( 1 )判断命令、脚本或函数等程序是否执行成功( 2 )若在脚本中调用执行“ e x i t 数字”,则会返回这个数字给“ ?的返回值用法:(1)判断命令、脚本或函数等程序 是否执行成功(2)若在脚本中调用执行“exit 数字”,则会返回这个数字给“ ?的返回值用法:(1)判断命令、脚本或函数等程序是否执行成功(2)若在脚本中调用执行exit数字,则会返回这个数字给?”变量(3)如 果是在函数里,则通过“return 数字”把这个数字以函数值的形式传给“$?”

echo $#
 
echo “The is $0”
 
echo “The is $1”
 
echo “The is $2”
 
echo "All is $*"
 
echo "All is $@"

输出:

2

“The is ./one.sh”

“The is 123”

“The is 456”

All is 123 456

All is 123 456
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 51单片机是指由英特尔公司开发的一种微控制器,具有广泛的应用领域,如家电控制、汽车电子、智能家居等。对于初学者来说,学习51单片机需要熟悉其原理和开发板的使用,而多功能集成开发板则是初学者福音。 多功能集成开发板是一种集成了各种功能模块和扩展接口的电路板,可以方便初学者进行实验和项目开发。该开发板通常包括51单片机核心、LCD显示屏、按键、LED指示灯、蜂鸣器、电源模块等功能模块。初学者只需将开发板与电脑连接,就可以通过编写简单的代码实现各种功能的实验。 使用多功能集成开发板,初学者无需自己设计电路原理图和PCB布局,可以直接使用现成的原理图和PCB。这大大降低了学习成本,使得初学者可以更快地上手。同时,该开发板还配备了丰富的外设和扩展接口,使得初学者可以进行更多的实验和项目开发。 除了提供硬件支持外,多功能集成开发板还通常配套提供了开发工具和教程。开发工具提供编程环境和调试工具,初学者可以通过简单的操作进行代码编写和调试。教程则提供了详细的操作指南和示例代码,帮助初学者快速掌握51单片机的编程技巧。 总之,多功能集成开发板对于51单片机初学者来说是一种福音。它为初学者提供了方便的硬件支持、开发工具和教程,帮助他们更快地掌握51单片机的原理和应用。通过使用多功能集成开发板,初学者可以进行各种实验和项目开发,从而提高自己的技术水平和创造能力。 ### 回答2: 51单片机初学者福音是指多功能集成开发板,这种开发板包含了原理图、PCB设计和配套外设,能够满足初学者学习并实践单片机编程的需求。 首先,原理图提供了电路的设计方案和连接方式,初学者可以通过研究原理图了解各个模块的功能和工作原理,从而掌握单片机的基本知识。 其次,PCB设计是将原理图转化为实际的电路板。多功能集成开发板的PCB设计精细,能够确保电路的稳定和可靠性,同时也考虑了布局优化和信号干扰等问题,减少了初学者在电路设计上的困扰。 此外,多功能集成开发板还提供了各种配套外设,如LED灯、按钮、蜂鸣器、LCD显示屏等。这些外设可以帮助初学者进行实验和编程,亲自动手实践代码,提高学习效果。而且,这些外设与开发板的连接方式都已经预留好,无需焊接,方便快捷。 多功能集成开发板还通常支持多种编程语言和开发环境,如C语言和Keil开发环境。对于初学者来说,这使得学习和编程变得更加简单和容易上手。 总之,多功能集成开发板提供了一站式的学习和实践平台,极大地方便了51单片机初学者。通过对原理图、PCB设计和配套外设的学习和使用,初学者可以快速入门,掌握51单片机编程的基本知识和技能,为以后的深入学习打下坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值