我编写了一个bash脚本,可以在我们的脚本目录中找到任何可执行文件,然后对生成的文件执行grep以显示描述(如果它包含在文件中)。
“description”在每个文件中标识为以“#DESC:”开头的行
由于某种原因,该脚本还包括正在运行的grep命令(但只运行一次)。有谁知道这是为什么?
脚本和输出如下所示。为什么输出中的第二行会发生?
#!/bin/bash
# Find any FILES that are EXECUTABLE in the SCRIPTS
# directory and display any description, if there is one
find /opt/scripts/. -perm -111 -type f -maxdepth 1 | while read line ;
do
file=$(basename "$line")
printf "\033[1m%10s\033[0m : " $file
grep "# DESC:" "$line" | cut -c 9-
done
desc : Displays all the scripts and their descriptions
DESC:" "$line" | cut -c 9-
showhelp : Displays the script help file
test : Script to perform system testing
答案 0 :(得分:0)
大概你的grepping脚本也在/ opt / scripts?
所以它找到了自己,并找到了grep主题'#DESC'并打印出来。
您可以通过在grep脚本的顶部添加#DESC行来解决这个问题,并使用'grep -m1'输出每个grep找到的第一个结果
grep -m1 '# DESC' "$line" | cut -c 9-
<幽默>否则它只是乌龟一直下来... ;-)< / humor>
您还可以使用正则表达式并锚定到行的开头来改进grep:
egrep -m1 '^# DESC' "$line" | cut -c 9-