Linux shell脚本,两个目录之间的差异

时间:2015-02-28 22:00:56

标签: linux bash

我制作了这段代码

if [ $# -ne 2 ]; then
echo "use $0 dir1 dir2"
exit 1
fi

if [ ! -d $1 ]; then
echo "$1 nu este un director"
exit 1
fi

if [ ! -d $2 ]; then
echo "$2 nu este un director "
exit 1
fi

a=0
k=1
for $1 in `ls`
do
if [ -f $1 ];  then
a=`exp $a + 1`
fi
done
echo "Ther are $a file "

我想比较两个文件夹,文件夹是命令行的参数..它应该是这样的:./ script.sh dir1 dir2

但我有这个错误:

**。/ director.sh:第29行:“$ 1”:不是有效的标识符 **

我想从dir1计算文件,该文件是命令行的参数。

有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

这是主要错误:

for $1 in `ls`
  1. $1不是有效的变量名称
  2. don't parse ls
  3. 改为

    for file in *
    

    另外,引用您的变量:您希望保护您的脚本免受包含空格的任何文件名的影响。

    if [ ! -d "$1" ]
    if [ -f "$file" ]
    

答案 1 :(得分:0)

而不是这部分:

a=0
k=1
for $1 in `ls`
do
if [ -f $1 ];  then
a=`exp $a + 1`
fi
done

这样做:

a=$(ls "$1" | wc -l)

如果您必须使用循环,请将其更改为:

a=0
for i in ${1}/*
do
    if [ -f "$i" ];  then
        let a=a+1
    fi
done
echo "There are $a files"