如何移除 shell script 的註解 - Linux

Table of Contents

hi all

在此的 shell script 是指 sh 與 bash 所撰寫的 script

一般註解的形式為 # xxxx

想請教是否有類似 strip 的工具

可以將 script 內的註解,正確的移除掉

以 sh17.sh 為例 http://tinyurl.com/2c8duyz

保留 #!/bin/bash ,移除中英文註解

最後呈現應為:
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
network="192.168.1"
for sitenu in $(seq 1 100)
do
ping -c 1 -w 1 ${network}.${sitenu} &> /dev/null && result=0 ||
result=1
if [ "$result" == 0 ]; then
echo "Server ${network}.${sitenu} is UP."
else
echo "Server ${network}.${sitenu} is DOWN."
fi
done

有請神人了,謝謝 :)

--

All Comments

Belly avatarBelly2010-06-22
you can check with `Regular Expression'
Enid avatarEnid2010-06-22
我知道 但目前還是會遇到許多無法正確清除的 case
Freda avatarFreda2010-06-22
譬如 # 前方有空白或 tab 應當移除該行 故想找更好的工具
Jessica avatarJessica2010-06-27
Regular Expression無法正確清除 是因為沒寫完整的判斷
Susan avatarSusan2010-06-27
多學些技巧應該可以清掉(推perl)
Yedda avatarYedda2010-06-30
參考一下#18V6X5pb,用Regexp應該可以清得很漂亮
Victoria avatarVictoria2010-07-02
suggest you paste your code here; otheres may help
Daniel avatarDaniel2010-07-03
sed -e 's/#.*//' -e 's/[ ^I]*$//' -e '/^$/ d' file.sh
Madame avatarMadame2010-07-05
sed -e '/^#/d' -e '/[^I]# /d' -e 's/ #.*$//'
Faithe avatarFaithe2010-07-10
-e '1s/^/#!\/bin\/sh\n/g' file.sh
where ^I is indicates tab, replacing it with one
that works for you.