下面的所有環境都在在REDHAT LINUX9下試驗的 在LINUX中,要使轉義符生效,需加參數-e 從echo的變量開始說起 如:e c h o指令輸出轉義符以及變量。 # echo -e "/007your home is $HOME , you are connected on `tty`" your home is /root , you are connected on /dev/pts/1 # echo -e "/ayour home is $HOME , you are connected on `tty`" your home is /root , you are connected on /dev/pts/1 # 本例中 /007或/a你可以讓終端鈴響一聲 顯示出$ H O M E目錄, 并且可以讓系統執行t t y指令(注意,該指令用鍵盤左上角的符号,法語中的抑音符引起來,不是單引号 )。 在e c h o指令輸出之後附加換行,可以使用/ n選項: $ cat echod #!/bin/sh echo -e "this echo's 3 new lines/n/n/n" echo "OK" 編輯一個新echod,如上内容,然後運作輸出如下: $ ./echod this echo's 3 new lines OK $ 在e c h o語句中使用跳格符,記住别忘了加反斜杠/: $ echo -e "here is a tab/there are two tabs/t/tok" here is a tab here are two tabs ok $ 把一個字元串輸出到檔案中,使用重定向符号>。 在下面的例子中一個字元串被重定向到一個名為m y f i l e的檔案中: $ echo "The log files have all been done"> myfile 或者可以追加到一個檔案的末尾,這意味着不覆寫原有的内容: $ echo "$LOGNAME carried them out at `date`">>myfile 現在讓我們看一下m y f i l e檔案中的内容: The log files have all been done sam carried them out at 六 11月 13 12:54:32 CST 2004 引号是一個特殊字元,是以必須要使用反斜杠/來使s h e l l忽略它的特殊含義。 假設你希望使用e c h o指令輸出這樣的字元串:“/ d e v / r m t 0”,那麼我們隻要在引号前面加上反斜杠/即可: $ echo "/"/dev/rmt0"/" "/dev/rmt0" $ |
|
|
|
|
|
exec: e x e c指令可以用來替代目前s h e l l;換句話說,并沒有啟動子s h e l l。使用這一指令時任何現有環境都将會被清除,并重新啟動一個s h e l l。它的一般形式為: exec command 其中的c o m m a n d通常是一個s h e l l腳本。 我所能夠想像得出的描述e x e c指令最貼切的說法就是:當這個腳本結束時,相應的會話可能就結束了。e x e c指令的一個常見用法就是在使用者的. p r o f i l e最後執行時,用它來執行一些用于增強安全性的腳本。如果使用者的輸入無效,該 s h e l l将被關閉,然後重新回到登入提示符。e x e c還常常被用來通過檔案描述符打開檔案。 e x e c在對檔案描述符進行操作的時候(也隻有在這時),它不會覆寫你目前的s h e l l。 可以看網中人《shell十三問》第六節: 6) exec 跟 source 差在哪? 能把十三問一次性看完最好,不過對我來說還是有些難度,今天才弄清楚第四問,看了好久才明白,目前為止,看完1,2,3,4,及11 exec: e x e c指令可以用來替代目前s h e l l;換句話說,并沒有啟動子s h e l l。使用這一指令時任何現有環境都将會被清除,并重新啟動一個s h e l l。它的一般形式為: exec command 其中的c o m m a n d通常是一個s h e l l腳本。 e x e c在對檔案描述符進行操作的時候,它不會覆寫你目前的s h e l l。 source和exec的差別 1,我認為他們帶的參數是不一樣的 source通常是shell腳本,而exec不但可以把一個腳本當成參數,而且還可以把一個系統指令當參數,例如: exec ls 2,另外一個不同就是,exec任務執行完畢後,會執行類似logout的操作,而source執行完一個任務後傳回目前的shell. 3,還有,他們的用途也不是一樣的
|
|