列出目录和文件的功能不起作用

时间:2014-07-23 16:11:23

标签: unix

  1 #! /bin/bash
  2
  3
  4 a=$(ls $@)
  5 echo $a
  6 for var in $a
  7 do
  8   if [ -d $var ]
  9   then
  10   echo "$var is a directory"
  11   elif [ -f $var ]
  12   then
  13   echo "$var is a file"
  14   fi
  15 done
  16

脚本的名称是test 2.如果我输入" sh test2。"在shell中,它显示所有文件和当前目录中为directorys的所有directorys。但是如果我输入" sh test2~"在shell中它没有显示它只列出文件的任何内容。为什么它不显示主目录中的文件和directorys?

1 个答案:

答案 0 :(得分:0)

我不确定你脚本的实际问题是什么。 ls可能没有提供可以解析的输出。但这是你可能想要的版本:

#!/bin/bash
shopt -s nullglob  ## Prevents patterns from presenting themselves if no match is found.
shopt -s dotglob   ## Includes files stating with .
files=()
if [[ $# -eq 0 ]]; then
    files=(*)
else
    for arg; do
        files+=("$arg"/*)
    done
fi
echo --------------------
printf '%s\n' "${files[@]}"
echo --------------------
for file in "${files[@]}"; do
    if [[ -d $file ]]; then
        echo "$file is a directory."
    elif [[ -f $file ]]; then
        echo "$file is a file."
    fi
done
echo --------------------