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]}