2017-09-14 46 views
0

我開始學習如何編寫shell腳本。我把它們全部放置在我的主目錄中的「個人腳本」文件夾中。不過他們開始加起來了。爲了解決這個問題,我試圖創建一個循環遍歷目錄的腳本,並給我一個關於每個腳本的簡短描述。如何在不執行它的情況下在bash腳本中記錄/讀取字符串?

現在我只能通過輸出腳本位置和名稱:

scriptsinfo

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

因爲我不想回去手動更新這個文件,我想將每個其他腳本中的關於句子作爲註釋或可以評估的字符串變量。

如何讀取文件夾中每個其他腳本的內容,並輸出他們的字符串/信息,瞭解他們在此腳本中執行的操作?

+0

你的意思是在每個腳本中都有一個註釋,比如''about:...''? – xiawi

+0

是的,我仍然決定如何解決它,所以它可以放置在任何類型的字符中,以便於解析,但我認爲只要將它放在#!/ bin/bash註釋下方的下一行就很容易抓住對嗎? – Jonathan002

回答

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://'僅用於說明。

+0

感謝您的支持! :) – Jonathan002

1

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

test.sh

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

script data 
.. 
.. 

〜#頭-n 2 test.sh

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

如果你有一個特定模式的所有腳本的註釋中,如

#info:此腳本每天運行

然後您可以簡單地使用grep作爲模式,並追加到每行中腳本的名稱。

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