當前位置:首頁 » 網頁前端 » shell腳本注釋
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

shell腳本注釋

發布時間: 2022-01-18 07:32:29

1. SHell腳本解釋:麻煩哪位把下面的代碼仔細注釋一下,感謝!

list=`ls -l|grep -v grep|grep -v 0|grep -v export.sh|sort -n|awk {'print $9'}`
| 是管道符,將前面命令的執行結果傳遞給後面的命令。
學會拆分開來看就不難理解,其實可以一步一步地執行看看結果,比如先執行 ls -l ,再執行ls -l|grep -v grep,再執行ls -l|grep -v grep|grep -v 0,看有什麼變化。
這句意思就是,將 ls -l 命令的結果中,去除包含grep、0以及export.sh的行,用sort排序後取出第9列內容(即文件名列表),保存到list變數中。後面的arg即為按順序從文件名列表中取出的每個文件名。

len=${#arg} #get string len
這一句後面已經有注釋了,獲取arg字元串長度。

tab=${arg:0:len-4} #get filename not include extend name
這句後面也有注釋了,獲取文件名中除擴展名外的部分。字面解釋,就是獲取第0個字元到第(長度-4)個字元之間的字元串(擴展名加.一共4個字元)。

echo "bcp ${tab} in /opt/sybase/sdb/ln_data/${arg} -Uname -Ppwd -Sserver -c -t'||' -r'&&\n' -b10 >>./err.txt 2>&1"
列印 echo 後面的語句。語句中的變數被展開。
我覺得這句有問題,最後的輸出重定向 >>./err.txt 2>&1 應該拿到雙引號外面來,而且如果僅保存錯誤信息到err.txt的話,應該寫成 2>>./err.txt

2. 在shell腳本中,哪個符號表示後面的內容是注釋

"#"號;
以「#」開頭的行就是注釋,會被解釋器忽略。

3. shell腳本里語句解釋

grep做文本過濾,查找操作
sed做文本替換操作,將 [{}="] 這個[ ]集合中的任意內容,只要出現都替換為空格。
awk篩選出每行的特定欄位,$5, $6, $9 $10 $11,列印出來並以空格分隔。
sort排序
uniq去重
結果保存到mk_RTDB-nef.tmp文件。

| 就是個管道符,把上一個命令的處理結果傳遞給下一個命令繼續處理。
要知道每步的結果,可以一個個地嘗試:
比如,先試試:
grep ^SERVER /SYSTEM//opf/absolute/lib/system_conf_mlt.txt
再試試:
grep ^SERVER /SYSTEM//opf/absolute/lib/system_conf_mlt.txt \
| sed 's/[{},="]/ /g'
再試試:
grep ^SERVER /SYSTEM//opf/absolute/lib/system_conf_mlt.txt \
| sed 's/[{},="]/ /g' \
| awk '{print $5 " " $6 " " $9 " " $10 " " $11}'

一步步地看輸出結果是什麼,對整個過程就瞭然於胸了。

4. 編寫滿足下列要求的Shell腳本文件,並說明運行該腳本文件的方法( a) 包含一段注釋,列出您的姓名、

echo Welcome $USER
echo Date&Time: `date`
echo HOSTNAME: `hostname`
echo "--------------------------------"
ls -a ~
echo "--------------------------------"
echo "ALL PROCESS"
ps -aux
echo "TERM IS:"
echo $TERM
echo "PATH IS:"
echo $PATH
echo "HOME IS:"
echo $HOME
echo "Please, couldn you loan me \$50.00?"
~

你可以把上面的文件保存在一個腳本,然後用/etc/bashrc來調用。

你說的父目錄是啥?

5. 編寫一個Linux的shell腳本求加註釋

#!/bin/bash
#filename:simple-useradd.sh

##(1)只使用一個參數,其他情況在退出後列印一條提示信息
##這個要求有點不明確,這是一個根據提示來執行的腳本,正常應該是不用傳遞參數的。
if[$#-ne0];
then
echo"Usage:$0"
exit1
fi
##(2)檢查/etc/passwd文件,屏幕輸出UID的消息
##定義函數DisplayUID
functionDisplayUID(){
cat/etc/passwd
}
##(3)檢查/etc/group文件,屏幕輸出GID信息
##定義函數DisplayGID
functionDisplayGID(){
cat/etc/passwd
}
##(4)用戶從鍵盤輸入信息--新用戶的描述、使用shell、UID、GID,並把這些信息分別添加到/etc/passwd、/etc/group、/etc/shadow中,創建用戶的主目錄/home/***---***為用戶名
##定義函數InputNewUser
functionInputNewUser(){
echo"---InputnewuserMenu"
read-p"username:"INusername
read-p"shell:"INshell
read-p"UID:"INUID
read-p"GID:"INGID
echo"開始在/etc/passwd添加帳號信息"
echo"開始在/etc/group添加帳號信息"
echo"開始在/etc/shadow添加帳號信息"
echo"創建用戶目錄…………"
useradd-s$INshell-u$INUID-g$INGID-m$INusername##useradd用來根據輸入,創建新用戶
if[$?-ne0];#對添加結果進行判斷
then
echo"添加用戶出錯了"
exit1
fi
}
##(5)設置新用戶的密碼
##定義SetPassWord
functionSetPassWord(){
localINusername
echo"SetPassWord:"
read-p"username:"INusername
passwd$INusername
}

whiletrue##進入菜單循環
do
cat<<-EOF##列印菜單
1------------DisplayUID
2------------DisplayGID
3------------Inputnewuser
4------------Setpassword
"按Qq退出"
EOF
read-p"choice:???"choice#接收用戶輸入
case$choicein#根據用戶選擇來執行相應的函數
1)DisplayUID;;
2)DisplayGID;;
3)InputNewUser;;
4)SetPassWord;;
[Qq])echo"bye";exit0;;
esac
done

這個腳本還有如下問題:

1、」只使用一個參數,其他情況在退出後列印一條提示信息」這個需求不明確,不知道是啥意思,正常情況下,像這種腳本都是不用位置參數的,也可能我不理解題目的意思;

2、腳本還不夠嚴謹,有一些異常沒有捕獲也沒有重定向,不過如果你是交作業的話就問題不大咯。

6. bash腳本的解釋

2>/dev/null 是將錯誤輸出重定向到文件/dev/null,/dev/null是由系統維護的一個垃圾站並且自動清空,你可以用cat工具看看,裡面是空的。如果你刪了這句,錯誤輸出將顯示到屏幕。2是一個文件描述符,代表標准錯誤輸出文件,默認為屏幕即/dev/stdout,另外0代表標准輸入,1代表標准輸出。學Shell推薦你看sobell的「Linux命令、編輯器與shell編程」,不要被一些爛書誤導了。

7. linux shell 腳本解釋

awk {'print $2'} 是取用空格分割的哪一列,'print $2'輸出第二列,也就是tomcat的進程PID,

sed -e "s/^/kill -9 /g":sed文本處理命令,-e說明使用正則表達式,"s/X/Y/g"替換的格式,用Y替換X,把一行的開頭(^)用kill -9 替換(注意9後面有個空格,必須)。輸出例:kill -9 PID

sh - : -代表標准輸入或輸出,這里表示標准輸入。就是相當於執行$sh kill -9 PID
此整個命令串意思:殺死tomocat進程。

8. 如何對shell腳本進行批量注釋

採用下面這種形式:

:<<COMMENTBLOCK
代碼行1
代碼行2
代碼行3
COMMENTBLOCK

注意:第二個COMMENTBLOCK需要頂格寫,前面不能有空格。

當然,這兩個COMMENTBLOCK也可以替換成任意在被注釋代碼行中未出現過的字元串。、


其實是利用了Here Documents,將代碼段作為空命令 : 的輸入。

關於Here Documents,參見:http://linux.die.net/abs-guide/here-docs.html

9. shell腳本讀文件如何忽略空行和注釋行

可以通過sed命令,將空行和注釋行刪除掉。

1、以下面的文檔內容為例,#號開頭的是注釋,然後有很多空行,文檔名為1.tt。

10. 如何寫一個shell腳本,將一個makefile里,沒有注釋的行注釋掉啊。

試試下面這句話,我沒測試,大致意思就這樣吧,把makefile中所有沒注釋的都注視掉。
sed -r -i '/^ *[^#]/ s/.*/#&/' makefile