如何在不执行bash脚本中记录/读取字符串



我开始学习如何编写shell脚本。我将它们都放在我的主目录中的文件夹"个人书本"中。他们开始加起来。为了解决这个问题,我试图创建一个脚本,该脚本在目录上循环,并给我一个简短的句子。

目前,我只能通过以下方式输出脚本位置和名称:

scriptsinfo

#!/bin/bash
for filename in ~/personal-scripts/*
do
  echo $filename
done

由于我不想返回并手动更新此文件,因此我想将大约句子互相放置为可以评估的注释或字符串变量。

如何在文件夹中读取彼此脚本的内容,并输出有关他们在此脚本中所做工作的字符串/信息?

您可以使用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

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

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

替代方案是将描述放在以开始的行中,例如 em> # about:,然后您可以grep IT:

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

| sed 's/# about://'只能保留描述。

如果您在所有脚本中都有特定模式的评论,例如

#info:此脚本每天运行

然后,您可以简单地使用grep来获取模式,然后将每个行中的脚本名称附加到。

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

最新更新