我开始学习如何编写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