如何在不执行bash脚本的情况下记录/读取字符串?

时间:2017-09-14 07:10:43

标签: bash shell

我开始学习如何编写shell脚本。我将它们全部放在一个文件夹' personal-scripts'在我的主目录中。他们开始加起来了。为了解决这个问题,我试图创建一个遍历目录的脚本,并简要介绍每个脚本的功能。

现在我只能通过以下方式输出脚本位置和名称:

scriptsinfo

CREATE TABLE EMPL_DEMO AS Memployees with no data; //structure

CREATE TABLE EMPL_DEMO AS Memployees with data; //structure and data

由于我不想手动返回并更新此文件,因此我想将about语句放在每个其他脚本中作为可评估的注释或字符串变量。

如何阅读文件夹中每个其他脚本的内容并输出他们在此脚本中执行的操作的字符串/信息?

3 个答案:

答案 0 :(得分:1)

您可以使用head命令执行此操作,该命令可打印文件的第一行n

<强> test.sh

# this is about line
# date is 14-9-2017

script data
..
..

〜#head -n 2 test.sh

# this is about line
# date is 14-9-2017

答案 1 :(得分:0)

如果您在所有脚本中都有使用特定模式的注释,例如

  

#info:此脚本每天运行

然后你可以简单地grep获取模式并附加到每行的脚本名称。

for filename in ~/personal-scripts/*
do
echo "$i : $(grep '#info' $i)"
done

答案 2 :(得分:0)

如果您在脚本的每一行添加说明,(在#!/bin/bash之后,请在脚本中使用sed -n "2p" $filename。您还可以在每个脚本之间添加分隔符:

#!/bin/bash
for filename in ~/personal-scripts/*
do
  echo "---------------------"
  echo $filename
  echo "---------------------"
  sed -n "2p" $filename
done

另一种方法是将描述放在任何位置,以例如 # about:开头,然后你可以grep

#!/bin/bash
for filename in ~/personal-scripts/*
do
  echo "---------------------"
  echo $filename
  echo "---------------------"
  grep "# about:" $filename | sed 's/# about://'
done

| sed 's/# about://'仅用于保留说明。