#!/bin/bash
location=$1
englishCount=0
bourneCount=0
CShellCount=0
symbolicCount=0
emptyCount=0
dirCount=0
if [ ! $# -eq 1 ]; then
echo Need to supply one argument
exit
fi
if [ ! -d $1 ]; then
echo Directory not found
exit
fi
find $location | while read item
do
if [-f "$item" ]
then
if [ "file $loc/* | grep English | wc -l" -eq 1 ]
then
$englishCount=$[englishCount+1]
elif [ "file $loc/* | grep Bourne | wc -l" -eq 1 ]
then
$bourneCount=$[bourneCount+1]
elif [ "file $loc/* | grep C.Shell | wc -l" -eq 1 ]
then
$CShellCount=$[$CShellCount+1]
elif [ "file $loc/* | grep symbolic | wc -l" -eq 1 ]
then
$symbolicCount=$[$symbolicCount+1 ]
elif
$emptyCount=$[$emptyCount+1 ]
elif [ -d "$item" ]
then
dirCount=$[dirCount+1]
fi
done
echo "English count: " $englishCount
echo "bourne count: " $bourneCount
echo "CShell count: " $CShellCount
echo "symbolic count : " $symbolicCount
echo "empty count: " $emptyCount
echo "Directory count: " $dirCount
我正在尝试创建一个脚本来按类型对目录内容进行排序,但是我得到一个错误,表示期望Integer表达式。 IM的印象是,用于与整数1进行比较的表达式会产生数值但是,我的脚本不能识别它。
答案 0 :(得分:0)
在第
行if [ "file $loc/* | grep English | wc -l" -eq 1 ]
您正在将字符串与数字进行比较。而是尝试
if [ `file $loc/* | grep English | wc -l` -eq 1 ]
后面的滴答声导致“它们之间的东西”作为子进程运行,结果返回到该程序。然后返回的“字符串”(来自wc -l
的一些数字输出)变为整数并与1
进行比较。
显然,您已对所有类似情况做过这样的事情。