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?
答案 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 --------------------