Bash for循环测试两个布尔表达式

时间:2018-03-20 11:36:22

标签: bash

下面是一个简单的bash程序。它将文件类型作为命令行参数,它查询当前目录并打印指定类型的文件。

我希望能够查询两种不同的文件类型,因此需要两个布尔表达式来表示这一点。

以下是我查询一种文件类型的代码

#!/bin/bash

for x in $(ls *$1); do
    echo $x;
done

现在我想做的是(伪代码)

command line args fileName .sh .c

for x in (current directory files of *.sh) OR (in current directory files of *.c) do
     print .sh files
     print.c files
done

我尝试过使用||我得到语法错误我找不到任何能够使用||的证据for for循环中的两个表达式。

我尝试过使用两个嵌套的for循环但它们不起作用并产生错误。

我有什么方法可以使用相同的for循环系统来实现这一点。

谢谢。

1 个答案:

答案 0 :(得分:0)

听起来像你想要的东西:

self.delayentry = self.delayent.get()   #self.delayentryvar.get()

循环传递给脚本的所有参数,并打印以每个扩展名结尾的所有文件+换行符。

请注意for extension in "$@"; do printf 'Files ending in %s:\n' "$extension" printf '%s\n' *"$extension" done 是一个比printf更有用的工具,因为它允许您控制每件事的格式是打印。

echo在这里做任何有用的事情都没有;它是将ls扩展到与模式匹配的文件列表的shell。