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
评论