shell简单使用介绍
脚本的基本元素
声明,在解释并执行当前脚本文件中的语句之前,需要声明使用的命令解释器
#一般写的解释器为
#!/bin/bash
这里的#不再是注释了,而是必要的声明
命令,也就是需要执行的语句
注释,对代码进行解释说明
分为单行注释和多行注释
单行注释 以#开头的一整行
#这里是注释
#这里也是注释
多行注释 使用冒号“:”配合here document可实现
:<<block
这里是注释
这里也是注释
这里还是注释
block
赋予rx的权限
shell脚本编写规则
建议脚本文件名应该简单清晰明了,看了就知道意思
文件开头指定脚本解释器 #!/bin/sh或者#!/bin/bash
在开头写明版本特权等信息
尽量使用英文注释
shell常用的命令
echo
echo是用于终端打印的基本命令,默认情况下,echo 在每次调用后会添加一个换行符
[root@localhost shell]# echo hello
hello
[root@localhost shell]# echo "hello world"
hello world
[root@localhost shell]# echo "hello;world"
hello;world
[root@localhost shell]# echo hello;world
hello
bash: world: command not found...
Failed to search for file: /mnt/BaseOS was not found
#注意这里的双引号""用来包含整个语句,防止被;打断语句
echo参数 | 说明 |
-n | 不换行输出 |
-e | 解析转义字符 |
\n | 换行 |
\r | 回车 |
\t | 制表符 |
\b | 退格 |
\v | 纵向制表符 |
[root@localhost shell]# echo -n why so serious
why so serious[root@localhost shell]#
[root@localhost shell]# echo -e why\tso\tserious
whytsotserious
[root@localhost shell]# echo -e "why\tso\tserious"
why so serious
eval
命令格式:eval args
功能:当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令,然后执行
[root@localhost shell]# a='shuju;head -1 /etc/passwd'
[root@localhost shell]# echo $a
shuju;head -1 /etc/passwd
[root@localhost shell]# eval echo $a
shuju
root:x:0:0:root:/root:/bin/bash
exec
命令能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行
完毕后,该进程就终止了
export
export设置或者显示环境变量
read
read 是一个重要的 bash 命令,用于从键盘或标准输入读取文本,我们可以使用 read 命
令以交互形式读取来自用户的输入
通常我们按下回车键表示命令输入完成,但是很特殊情况下,我们需要基于字符数或者
特定字符来表示命令输入完成
-p prompt:设置提示信息
-t timeout:设置输入等待时间,单位默认为秒
[root@localhost shell]# read -t 10 -p "please input your name:" name
please input your name:me
[root@localhost shell]# echo $name
me
[root@localhost shell]# echo -n "please input your name:"; read name1 name2
please input your name:me you
[root@localhost shell]# echo $name1
me
[root@localhost shell]# echo $name2
you
shift
在程序中每使用一次shift语句,都会使所有的位置参数依次向左移动一个位置,
并使位置参数$#减1,直到减到0为止
exit
退出shell程序
shell脚本的执行方式
bash ./filename.sh——产生子进程,再运行,使用当前指定的bash shell去运行
./filename.sh
产生子进程,再运行,使用脚本里面指定的shell去运行。使用该种方式
执行需要x权限
source ./filename.sh
source命令是一个shell内部命令,其功能是读取指定的shell程
序文件,并且依次执行其中的所有的语句,并没有创建新的子shell进程,所以脚本里面所有创
建的变量都会保存到当前的shell里面
.filename.sh——和source一样,也是使用当前进程执行
首选我们写一个以 .sh结尾的文件
vim read01.sh
#!/bin/bash
read -n1 -p "DO you want wo continue [Y/N]" answer
case $answer in
Y|y)
echo "fine,continue";;
N|n)
echo "ok,good bye";;
*)
echo "error choice";;
esac
exit 0
使用各种方法执行它
这里使用第一种方法
[root@localhost shell]# bash ./read01.sh
DO you want wo continue [Y/N]yfine,continue