使用ls命令导致循环

时间:2018-05-18 18:59:14

标签: linux bash loops ls

我想在循环中使用ls命令的结果来检查例如第一行是否是目录,第二行等。 例如,我有这个文件夹,其中包含脚本应显示的一个目录:

  

18_05_2018是目录

enter image description here

1 个答案:

答案 0 :(得分:0)

创建一个名为is_file_or_directory.sh的文件,其中包含:

cd "$1" || echo "Please specify a path" && exit
for i in *; do
    if [[ -d $i ]]; then
        echo "$i is a directory"
    elif [[ -f $i ]]; then
        echo "$i is a file"
    else
        echo "$i is not valid"
        exit 1
    fi
done

使用以下命令使该文件可执行:

sudo chmod +x is_file_or_directory.sh

运行脚本,指定要分析的路径作为参数:

./is_file_or_directory.sh /root/scripts/

输出:

jeeves ~/scripts/stack # ./is_file_or_dir.sh /root/scripts/
databe.py is a file
is_file_or_dir.sh is a file
mysql_flask.py is a file
test is a directory

以下是对引擎盖下发生的事情的更详细解释:
在BASH中,变量$ 1是发送给脚本的第一个参数 在我们的例子中,它是脚本执行其操作的路径 然后我们在循环中使用变量$ i。

$ i content将是$ 1路径中的每个文件/文件夹名称 使用-d和-f,我们检查$ i是文件还是文件夹。

快乐的黑客攻击!