繁体   English   中英

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

[英]Linux shell script, differences between two directories

我做了这个代码

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计算文件,该文件是命令行的参数。

有人能帮助我吗 ?

这是主要错误:

for $1 in `ls`
  1. $1不是有效的变量名称
  2. 不要解析ls

这样做

for file in *

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

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

而不是这部分:

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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM