1.
进入homework_1文件夹,编写脚本check_file.sh。要求:
[1] 当前目录下仅包含check_file.sh。
[2] check_file.sh具有可执行权限。
[3] check_file.sh接收一个传入参数。格式为 ./check_file.sh file
[4] 判断传递参数,分别在标准输出中输出如下内容(不包括双引号):
1) 如果传入参数个数不是1,则输出一行:"arguments not valid",然后退出,退出状态等于1。
2) 如果file文件不存在,则输出一行:"not exist",然后退出,退出状态等于2。
3) 如果file文件存在,则输出分别进行如下5个判断,然后退出,退出状态等于0。
1] 如果file为普通文件,则输出一行:"regular file"
2] 如果file为目录(文件夹),则输出一行:"directory"
3] 如果file具有可读权限,则输出一行:"readable"
4] 如果file具有可写权限,则输出一行:"writable"
5] 如果file具有可执行权限,则输出一行:"executable"
- 获取参数个数用 $#
- 判断符号 [ ]注意每一项都要空格隔开!!!!!!
- []中的变量最好用双括号括起来,常数最好用单双引号。
#! /bin/bash
#整数之间的比较相关参数
# -eq a是否等于b
# -ne a是否不等于b
# -gt a是否大于b
# -lt a是否小于b
# -ge a是否大于等于b
# -le a是否小于等于b
# 文件类型判断相关参数:
# -e 文件是否存在
# -f 是否为文件
# -d 是否为目录
# 文件权限相关参数
# -r 文件是否可读
# -w 文件是否可写
# -x 文件是否可执行
# -s 是否为非空文件
# $@:表示所有脚本参数的内容
# $#:表示返回所有脚本参数的个数。
# $0:表示shell本省的文件名
if [ $# -ne 1 ]
then
echo arguments not valid
exit 1
fi
if [ ! -e "$1" ]
then
echo "not exist"
exit 2
fi
if [ -f "$1" ]
then
echo "regular file"
fi
if [ -d "$1" ]
then
echo "directory"
fi
if [ -r "$1" ]
then
echo "readable"
fi
if [ -w "$1" ]
then
echo "writable"
fi
if [ -x "$1" ]
then
echo "executable"
fi
2.
进入homework_2文件夹,编写脚本main.sh。要求:
[1] 当前目录下仅包含main.sh
[2] main.sh具有可执行权限
[3] 该文件从stdin(标准输入)中读取一个整数n
[4] 在stdout(标准输出)输出斐波那契数列的第n项。即:a[0] = 1, a[1] = 1, a[i] = a[i - 1] + a[i - 2], 求a[n]。
[5] 数据保证 0 <= n <= 20,脚本不需要判断n的合法性。
- 注意等号赋值两边不要有空格
- 取变量记得用(){}扩起来
#! /bin/bash
read n
a[0]=1
a[1]=1
for((i = 2;i <= n; i ++))
do
x=$(expr $i - 1)
y=$(expr $i - 2)
a[$i]=$(expr ${a[$x]} + ${a[$y]} )
done
echo ${a[$n]}