3.3 编写脚本

By admin, 27 六月, 2018

1. 一个例子

#!/bin/bash

# 第一行表示解释本脚本的命令路径,如果文件带有可执行属性,那么文件可以直接运行。

# 第一行的路径如果填写#!/usr/bin/python,那么就表示这是一个Python脚本文件,会用Python解释器解释。

# 井号开头的行是注释

 

echo "echo命令用来打印信息在屏幕上"

 

# 脚本退出的时候可以用exit 0;来返回退出状态,0表示正常返回,如果非0,表示异常返回。$?特殊变量可以返回上一条命令的退出状态。

ls '一个不存在的文件'

echo $?

# 屏幕会显示2,这是ls命令遇到文件不存在时返回的错误码。

 

# &&表示逻辑与,||表示逻辑或。在一般的计算机语言解释器中,如果&&左边的条件成立才会执行检查&&右边的语句是否成立;同样地,如果||左边的条件不成立才会执行检查右边的语句是否成立。这就起到了条件语句的作用。

rm foo && echo '文件已删除' || echo '文件没有删除'  

 

# $(命令)可以把执行命令后的屏幕输出以字符串形式返回

echo $(date)

 

# declare -i 命令可以生命变量为整型

declare -i num1

declare -i num2

declare -i sum

 

echo "请输入一个数字:"

read num1

echo "请再输入一个数字:"

read num2

sum=$num1+$num2

echo "您输入的两个数字之和是:$sum"

# 如果之前没有声明变量为整形,那么+操作就不是数值相加,而是字符串拼接

 

# 条件语句

if [ -e "foo" ]; then

    echo "文件foo存在"

else

    echo '文件foo不存在'

fi

 

# 除了-e外,下面一些符号可以判断文件其它属性:

# -f: 是否文件

# -d: 是否目录

# -L: 是否符号链接

# -r: 是否可读

# -w: 是否可写

# -x: 是否可执行

# num1 -eq num2: 比较两个数值是否相等

# num1 -gt num2: num1是否大于num2

# num1 -lt num2: num1是否小于num2

 

 # case语句分支

read num

case $num in

    1 | 2) echo "您输入了1或2";;

    3) echo "您输入了3";;

esac

 

# while循环

# while condition

# do

#     script commands

# done

 

# until循环

# until condition

# do

#     script commands

# done

 

# for循环

# `seq 15`会生成一个1到15的数组

for i in `seq 15`

do

     echo $i

done

 

 

 

 

假设以上文件叫demo.sh,出于当前目录下。下面命令可以给脚本添加可执行属性:

chmod a+x demo.sh

下面命令可运行脚本,“./”前缀是必须的,因为当前目录并不在可执行文件搜索范围,这和Windows命令行是不同的。

./demo.sh

 

 

2. 考纲描述

3.3 Turning Commands into a Script

Weight: 4

Description: Turning repetitive commands into simple scripts.

Key Knowledge Areas:

  • Basic shell scripting
  • Awareness of common text editors

Terms and Utilities:

  • #! (shebang)
  • /bin/bash
  • Variables
  • Arguments
  • for loops
  • echo
  • Exit status

 

下一节:4.1 选择操作系统

返回目录

评论

Restricted HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <img src>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。
验证码
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
请输入"Drupal10"

最新评论