【发布时间】:2014-10-12 22:56:47
【问题描述】:
我想创建一个 bash 脚本来列出用户通过输入提供的目录中的所有目录,或当前目录中的所有目录(没有输入)。
这是我到目前为止所拥有的,但是当我执行它时遇到两个问题。
1) 脚本完全忽略了我的输入。该文件位于我的桌面上,但是当我输入“home”作为输入时,脚本只会打印桌面的目录(当前目录)。
2) 目录打印在自己的行上(有意),但它将文件夹名称中的每个单词都视为自己的文件夹。即打印为:
this
folder
这是我目前的代码:
#!/bin/bash
echo -n "Enter a directory to load files: "
read d
if [ $d="" ]; #if input is blank, assume d = current directory
then d=${PWD##*/}
for i in $(ls -d */);
do echo ${i%%/};
done
else #otherwise, print sub-directories of given directory
for i in $(ls -d */);
do echo ${i%%/};
done
fi
另外,请在您的回复中解释您的答案,因为我对 bash 很陌生。
感谢您的收看,感谢您的宝贵时间。
编辑:感谢 John1024 的回答,我想出了以下内容:
#!/bin/bash
echo -n "Enter a directory to load files: "
IFS= read d
ls -1 -d "${d:-.}"/*/
它可以满足我的一切需求。非常感谢!
【问题讨论】: