1.什么是shell script?

shell script类似于windows中的批处理文件,可以一次性执行多条shell命令,它实质是纯文本文档,我们可以利用它方便地完成一些实用的功能。

2.shell script编写注意事项

  1. 如果读取到一个Enter符号,就尝试开始执行该行命令。
  2. 如果一行的内容太多,可以使用“\”对换行符进行转义。
  3. "#"后边跟的内容,相当于C语言中的注释。

3.shell script执行方式

假设你编写的shell script存放在/home/dmtsai/shell.sh

  • 直接指令下达

    • 绝对路径,使用/home/dmtsai/shell.sh来下达命令
    • 相对路径,假设工作目录在/home/dmtsai/,则使用./shell/sh来执行。
    • 变量功能。将shell.sh放在PATH指定的目录内,例如:~/bin/
  • 以bash程序来执行

通过bash shell.sh或者sh shell.sh来执行。

4.shell script例子

参考书籍:《鸟哥的Linux私房菜-基础学习篇第三版》第13章 学习Shell Scripts sh01.sh: **基本功能:**在屏幕(终端)输出Hello World!。

#!/bin/bash
echo -e "Hello World!\a"
exit 0

[注]:

  • #!bin/bash宣告这个script使用的shell名称,这里是bash
  • -e选项用来解释\a\n,如果不加则直接输出文本" Hello World!\a\n"

sh02.sh: 基本功能: 首先,判断一下,让使用者输入一个文件名(或目录名),我们判断:

  1. 这个档案是否存在,若不存在则提示文件(或目录)不存在,并中断程序。
  2. 若这个文件(或目录)存在,则判断它是个一个普通文件还是一个目录,并输出提示信息。
  3. 判断一下,执行者的身份对这个文件或目录所拥有的权限,并输出权限数据!
#!/bin/bash
read -p "请输入文件名(或目录名):" filename
test -z $filename && echo "你必须输入一个文件名(或目录名)" && exit 0

test ! -e $filename && echo "文件(或目录)'$filename'不存在" && exit 0

test -f $filename && filetype="普通文件"
test -d $filename && filetype="目录"

echo "$filename是一个$filetype"

test -r $filename && echo -n "r" || echo -n "-" && \
test -w $filename && echo -n "w" || echo -n "-" && \
test -x $filename && echo -n "x" || echo -n "-"
echo ""