ShellScript练习题

编写一个script能接受一个目录作为命令行参数,如果传入的参数个数多于或少于1,显示一个使用信息提示,比如:“usage: program directory”。如果这个参数不是一个目录,显示一个错误信息。如果是一个目录,显示出此目录下的所有文件,然后再显示出最大的五个文件。

#!/bin/bash
if [ $# -ne 1 ]
then
echo "usage: program directory"
fi
dirname=$1
if [ -d "$dirname" ]
#写成 if [ -d $dirname ]亦可
then
echo "是目录"
else
echo "找不到这个目录"
fi
cd /home/xx/$dirname
pwd
echo "open the directory"
ls -al
echo "find top5"
du -a | sort -n -r | head -n 5
echo "another top 5"
ls -lh | sort -r | tail -n 5
echo "way 3"
du -sh * | sort -nr | head -n 5

更新!

今天测试时,发现一直显示找不到目录,一直想问题出在哪里?后来意识到判断目录要加上路径!

还有就是要注意变量的字母是否一致,我就犯了单词写错的错误

#!/bin/bash
dname=$1
echo "filename is $dname"
if [ $# -ne 1 ]
then
echo "error"
fi
if [ -d /home/xx/$dname ]
then
echo "is directory"
else
echo "not directory"
fi
cd /home/xx/$dname
pwd
echo "ls"
ls -l

判断不存在:

#如果文件夹不存在,创建文件夹
if [ ! -d "/myfolder" ]; then
  mkdir /myfolder
fi

(1)算术比较运算符

num1 -eq num2              等于         [ 3 -eq $mynum ]

num1 -ne num2              不等于       [ 3 -ne $mynum ]

num1 -lt num2               小于        [ 3 -lt $mynum ]

num1 -le num2            小于或等于     [ 3 -le $mynum ]

num1 -gt num2             大于          [ 3 -gt $mynum ]

num1 -ge num2             大于或等于    [ 3 -ge $mynum ]

(2)文件比较运算符

-e filename     如果 filename 存在,则为真            [ -e /var/log/syslog ]

-d filename     如果 filename 为目录,则为真          [ -d /tmp/mydir ]

-f filename     如果 filename 为常规文件,则为真      [ -f /usr/bin/grep ]

-L filename     如果 filename 为符号链接,则为真      [ -L /usr/bin/grep ]

-r filename     如果 filename 可读,则为真            [ -r /var/log/syslog ]

-w filename     如果 filename 可写,则为真            [ -w /var/mytmp.txt ]

-x filename     如果 filename 可执行,则为真          [ -L /usr/bin/grep ]

-z string               如果 string 长度为零,则为真               [ -z $myvar ]

-n string                      如果 string 长度非零,则为真        [ -n $myvar ]

string1 = string2         如果 string1 与 string2 相同,则为真     [ $myvar = one two three ]

string1 != string2        如果 string1 与 string2 不同,则为真     [ $myvar != one two three ]

-s  文件长度不为 0

(3)输入参数

$# 是传给脚本的参数个数

$0 是脚本本身的名字

$1 是传递给该shell脚本的第一个参数

$2 是传递给该shell脚本的第二个参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值