当前位置:首页 > > 充电吧
[导读]shell脚本开头一般会标识调用的是那个shell,格式#!/bin/sh,运行脚本文件一般有两种方式sh 脚本名字和./脚本名字这两种方式区别在于,第一种脚本文件开头可以不用写#!/bin/sh,而

shell脚本开头一般会标识调用的是那个shell,格式#!/bin/sh,运行脚本文件一般有两种方式sh 脚本名字和./脚本名字
这两种方式区别在于,第一种脚本文件开头可以不用写#!/bin/sh,而第二种必须写。
在系统中打开中断输入命令前,系统一般会进行对该终端初始化操作,该初始化操作由~/.bash_rc来完成,查看该文件如下:
# .bashrc
# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
该文件重新定义了rm cp mv命令,然后又进入/etc/bashrc来完成初始化

在终端驶入多个命令时,可以用;来连接各个命令。例如
[root@localhost ~]# ls;cd /usr
anaconda-ks.cfg  httpdump  install.log  install.log.syslog
[root@localhost usr]#
输入ls;cd /usr,依次执行了ls和cd /usr命令

在脚本中有两种方式来打印信息
1.echo
例如:echo "this is test"
[root@localhost usr]# echo "this is test"
this is test
打印的字符串可以用双引号,单引号,不带任何东西
如果字符串中带有特殊字符,那么这个字符不能在双引号中,否则会出错,如果要在双引号中引用特殊字符,那么得用转义字符
例如:echo "!"
[root@localhost usr]# echo "!"
-bash: !: event not found
[root@localhost usr]# echo !
!
[root@localhost usr]# echo "!"
!
如果要打印变量,那么就不能带有双引号或单引号,例如echo $pa,打印变量pa的值,$指取pa的值
一般echo输出内容后会在字符串末尾添加一个换行符,如果不需要换行符,可以使用echo -n,如果字符串中包含转义字符,那么得用echo -e选项来表明该字符串中有转义字符,如果不加-e选项,转义字符会以字符

形式输出
2.printf
和C语言中printf类似,以格式化形式输出
例如:

[root@localhost usr]# printf "%d,%sn" 11 12312312
11,12312312

在shell脚本中,变量是没有类型的,都是以字符串形式存储。输出变量时,变量前应带上$表明这个是变量或者变量用中括号括起来再在前面加上$,如果要获得变量的长度,比如有变量TEST,获取该变量的值

${#TEST}。给变量赋值时应注意格式,比如TEST = "hello word"(值没有空格的话,可以不用双引号),这种格式是错误的,等号两边不能有空格,TEST="hello word"。
在shell中子进程可以继承父进程的变量,比如环境变量,可以编写shell脚本时直接调用环境变量,可以输入expor或env,设置环境变量export 变量名=值。给变量增加值,export 变量名="$变量名;值"


shell技巧
如何得知当前使用的shell?
echo $SHELL
echo $0
两个命令都会打印当前使用的shell

如何检查当前运行脚本的用户是不是root用户
检查$UID的值是否为0,为0则是root用户

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

C语言的格式化字符串函数(如printf、sprintf、syslog等)因参数解析机制的设计缺陷,成为内存攻击中最经典的漏洞类型之一。攻击者可通过构造恶意格式化字符串,读取任意内存地址、篡改栈数据甚至执行代码。本文将从...

关键字: C语言 printf

在 20 世纪 90 年代,在实际硬件上调试嵌入式软件主要有两种基于工具的解决方案:一种是监控调试器,它是在嵌入式系统内存中编程的软件,可响应来自外部的调试器软件的请求。另一种是在线仿真器,它是一块(大型)硬件,可通过适...

关键字: 硬件调试 printf

在实际项目中,我们经常需要提取一个数值的某些位的数码,比如用数码管来显示数值或将一个数值转成字符串,都会涉及到这一操作。

关键字: 数值 数码 printf

前言:今天给大家分享一篇在我工作中常用的一个shell脚本,里面有一些我们常用到的shell操作。该脚本用于本地电脑和服务器交互上,实现以下功能:自动拉取自己个人电脑上的源码到服务器上yocto包的源码文件夹。自动运行c...

关键字: shell脚本

最近在忙活搞别的事情(太难受了),严重影响了硪那一颗自由飞翔的芯~~所以今天打算分享一个麻省理工小伙写的printf家族的函数~说是号称目前网上嵌入式最好的printf喔.在嵌入式中printf这种功能强大的函数可谓是c...

关键字: printf 嵌入式

大伙估计在多任务程序中使用printf打印一些信息是非常欢乐的一件事,运气不错的话偶尔错几个数据、乱几个码也不是什么大问题,倒霉点的可能就直接挂机、卡死了,那这些到底是什么原因导致的呢?

关键字: printf 可重入函数

SWO串行线输出是单引脚、异步串行通信,可在Cortex-M3/M4/M7上使用,并由主调试器探测支持,它是利用Cortex内核中ITM模块来实现此功能。

关键字: printf 嵌入式

  在家庭的插座、电视等产品智能化之余,用户希望有更多的传统数码产品智能化,同时厂商也希望借助更多的智能产品寻求突破,智能音箱就是这个被双方同时找到的产品。   2014 年 11 月,

关键字: echo 亚马逊 智能家居 智能音频 物联网

  2016年上半年,科技界发布了大量产品:新款亚马逊Tap和Echo Dot,三星GalaxyS7和S7 Edge,HTC Vive 和Oculus Rift,以及iPhone SE。尽管如此

关键字: amazon echo google iphone7 oculus rift vr

  “智能家居”这一概念已经不再是纸上谈兵,无论是时不时想搞出大动作的谷歌旗下Nest智能家居公司,还是亚马逊一直在大力推广更新换代的Echo,都希望尽快把智能家居推广到

关键字: appletv echo 智能家居
关闭