shell脚本的介绍和在脚本中打印信息
扫描二维码
随时随地手机看文章
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用户