我制作了这段代码
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计算文件,该文件是命令行的参数。
有人能帮助我吗?
答案 0 :(得分:0)
这是主要错误:
for $1 in `ls`
$1
不是有效的变量名称ls
改为
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"