目录
一、常用内部命令和变量使用
1、echo命令
功能:用来输出字符串或者变量
参数:
-n:不换行输出文件内容
-e:解析转义字符
示例:
[root@localhost ~]# echo -n ada aax2
ada aax2[root@localhost ~]#
[root@localhost ~]# echo -e ss\tad\taxs
sstadtaxs
[root@localhost ~]# echo -e "ss\tad\taxs"
ss ad axs
2、eval命令
结构:eval agrs
功能:当执行eval时,shell读入到agrs时,会把它们重新组成一个新的命令,然后执行
示例:
[root@localhost ~]# a='data;tail -1 /etc/passwd'
[root@localhost ~]# echo $a
data;tail -1 /etc/passwd
[root@localhost ~]# eval echo $a
data
named:x:25:25:Named:/var/named:/bin/false
3、exec命令
功能:在不创建子进程的前提下,执行命令,执行完命令后进程终止
示例:
[root@localhost ~]# exec echo asd
asd
会立刻退出本进程
4、export命令
功能:设置或显示环境变量
示例1:
[root@localhost ~]# export
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/0/bus"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
....
示例2:
[root@localhost ~]# a=123456 //定义变量a
[root@localhost ~]# export a //把a变为环境变量
[root@localhost ~]# b=0 //定了变量b,但不成为环境变量
[root@localhost ~]# bash //进入到一个子进程
[root@localhost ~]# echo $a //输出a变量值
123456
[root@localhost ~]# echo $b //变量b没有值
[root@localhost ~]# unset a //删除变量a
[root@localhost ~]# echo $a
[root@localhost ~]#
示例3:
使用export和declare命令来定义环境变量,针对root用户的所有连接:root_data=root,针对所有用户的变量: all_data=all
[root@localhost ~]# all_data=all
[root@localhost ~]# read_data=root
[root@localhost ~]# export read_data
[root@localhost ~]# declare -x all_data
[root@localhost ~]# 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 ~]# declare //查看变量
quote ()
{
local quoted=${1//\'/\'\\\'\'};
printf "'%s'" "$quoted"
}
....
5、read命令
功能: 从标准输入内容中读取字符串等信息,并传递给shell内部定义的变量
参数:
-p:设置提示信息-t:设置等待时间,默认单位为秒
示例:
[root@localhost ~]# read -t 10 -p "please input your name: " name
please input your name: dada
[root@localhost ~]# echo $name
dada
读取俩个变量,name1,name2,其中name1包含空格
[root@localhost ~]# read name1;read name2
hello word
!
[root@localhost ~]# echo $name1
hello word
[root@localhost ~]# echo $name2
!
6、shift命令
功能:每使用一次shift命令,都会把所有位置参数依次往左移一个位置,并使位置参数$#减一,直到减到0位置
示例:
[root@localhost ~]# vim a.sh
//内容如下
#!/bin/bash
shift
echo $@
[root@localhost ~]# bash a.sh 11 22 33 44
22 33 44
7、exit命令
功能: 退出shell程序,可以选择一个数来作为返回状态,范围为0~255之间的整数,0代表成功,其余代表失败
示例:
[root@localhost ~]# vim b.sh
#!/bin/bash
echo "abc"
exit 222
echo "mm21"
[root@localhost ~]# echo $?
222 //并没有执行后面的命令
[root@localhost ~]#
二、脚本执行的方式和特点
1、交互式执行
示例:
[root@localhost ~]#
[root@localhost ~]# for i in `ls /etc`
> do
> if echo "$i" | grep "passwd"
> then
> echo "$i"
> fi
> done
passwd
passwd
passwd-
passwd-
2、作为程序文件执行
示例:
[root@localhost ~]# vim work1.sh
#!/bin/bash
for i in `ls /etc`
do
if echo "$i" | grep "passwd"
then
echo "$i"
fi
done
[root@localhost ~]# bash work1.sh
passwd
passwd
passwd-
passwd-
三、设置vim编辑sh文件的缩进为4个空格
[root@localhost ~]# vim .vimrc
set tabstop=4
[root@localhost ~]# source .vimrc
四、 $#,$*,$@,$n,$?的使用
$#:命令行参数的个数
$*: 以"参数1 参数2 参数3…"的形式返回所有参数的值
$@: 以“参数1”“参数2”“参数3”…的形式返回所有的值
$n:表示传递给脚本的第n个参数,例如$1表示第一个参数,$2表示第二个参数,$3表示第三个参数
$?:前一个命令或者函数的返回状态码。
示例:
[root@localhost ~]# vim a.sh
#!/bin/bash
echo $#
echo $*
echo $@
echo $1
[root@localhost ~]# bash a.sh aa bb cc
3
aa bb cc
aa bb cc
aa
[root@localhost ~]# echo $?
0