[問題] 如何移除 shell script 的註解

看板Linux作者 (none)時間14年前 (2010/06/20 00:15), 編輯推噓2(2010)
留言12則, 4人參與, 最新討論串1/4 (看更多)
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 有請神人了,謝謝 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.149.53

06/20 00:19, , 1F
you can check with `Regular Expression'
06/20 00:19, 1F

06/20 00:27, , 2F
我知道 但目前還是會遇到許多無法正確清除的 case
06/20 00:27, 2F

06/20 00:29, , 3F
譬如 # 前方有空白或 tab 應當移除該行 故想找更好的工具
06/20 00:29, 3F

06/20 00:43, , 4F
Regular Expression無法正確清除 是因為沒寫完整的判斷
06/20 00:43, 4F

06/20 00:45, , 5F
多學些技巧應該可以清掉(推perl)
06/20 00:45, 5F

06/20 12:15, , 6F
參考一下#18V6X5pb,用Regexp應該可以清得很漂亮
06/20 12:15, 6F

06/20 13:27, , 7F
suggest you paste your code here; otheres may help
06/20 13:27, 7F

06/20 17:55, , 8F
sed -e 's/#.*//' -e 's/[ ^I]*$//' -e '/^$/ d' file.sh
06/20 17:55, 8F

06/21 15:53, , 9F
sed -e '/^#/d' -e '/[^I]# /d' -e 's/ #.*$//'
06/21 15:53, 9F

06/21 15:54, , 10F
-e '1s/^/#!\/bin\/sh\n/g' file.sh
06/21 15:54, 10F

06/21 15:54, , 11F
where ^I is indicates tab, replacing it with one
06/21 15:54, 11F

06/21 15:54, , 12F
that works for you.
06/21 15:54, 12F
文章代碼(AID): #1C7EqK9P (Linux)
討論串 (同標題文章)
文章代碼(AID): #1C7EqK9P (Linux)