我正在使用Korn shell完成以下某项任务。
对于参数列表中的每个参数(成为当前路径名):
ls -l
和wc
的管道的子目录,并保存
导致名为curentries的变量。for
周期完成后,显示(带有
echo)目录名,maxsubdir和maxentries(适当的
说明文字。)处理完所有路径名后,脚本的执行结束(while
已完成)
这是我到目前为止的代码(已编辑):
#!/bin/ksh
directoy=$1
while [ $# -ne 0 ]; do
if [ -d $1 ]; then
maxsubdir=
maxentries=0
for x in $1; do
echo "Checking if $1 represents a directory..\n"
curentries="ls -l | wc"
if [ $curentries > $maxentries ]; then
maxentries=$curentries
maxsubdir=$curentries
fi;
done
echo "The directory structure of $1 is … \n"
echo "Maximum sub directories: \n"
echo "$maxsubdir\n"
echo "Maximum directory entries: \n"
echo "$maxentries"
fi
done
我需要在哪里插入" shift"命令,因为我Unix只能处理有限数量的参数?
我的语法合适吗?或者排序行上是否有语法错误?
脚本似乎运行但不会产生输出到屏幕?也许它是无止境的?
答案 0 :(得分:0)
看看这里,看看这是否有帮助。解释在代码中。
#!/bin/ksh
directory=$1
# check whether the entered path is a directory
if [ -d $1 ];then # yes, it's a directory
maxsubdir=null
maxentries=0
echo "$1 is a directory"
# you are only counting lines, add -l to wc
# also you have to not count the first line. it's returns the size
curentries=`ls -l $1 | wc -l`
echo ${curentries}
fi
答案 1 :(得分:0)
for
循环,并且您已实施while
循环。我会让你开始:
for directory in $*; do
cd "$directory"
curentries=$(ls -1 | wc -l)
for entry in $(ls -1); do
...
done
done