linux shell 學習筆記7——HERE Document__linux

來源:互聯網
上載者:User
 
 
 
 
 
 
 
 
 


HERE Document是bash裡面定義塊變數的途徑之一

定義的形式為: 

命令<<HERE 

...

...

...

HERE


它的作用即可以用來定義一段變數,會把命令和HERE之間的內容利用轉向輸入的方式交給該命令去處理。 其中HERE相當於標記,可以是任何的字串
使用HERE Document用在變數設定:

[root@localhost ~]# WOW='Wow,great!'[root@localhost ~]# m1=$(cat <<HERE> Line 1 is good.> They are jack,marry and john.> $WOW> HERE)
 echo $m1Line 1 is good. They are jack,marry and john. Wow,great!
如上例寫成
$(cat <<"HERE",   表示這個Here Document擁有和雙引號一樣的特性,即支援變數替換的功能




也可以用來定義一段注釋 , 利用HERE Document做多行批註,方法是:
:<<HERE  這是第一行批註 這是第二行批註 這是第三行批註 其它行,類推
HERE
:代表什麼都不做
原本bash只支援單行批註(用#表示),現就可用於多行注釋了。
注意這裡HERE還有一個特殊的用法 :
就是在HERE前面加 上 - 或者給HERE加上' '加上- 表明下述文欄位所有TAB鍵將全部忽略加上' '表明以下凡是變數定義用到了' ',將會使變數呈現所見即所得 (WYSIWYG)的形式,也即關閉變數替換;如果加上的是" "雙引號,則會進行變數替換。  
 
[root@localhost ~]# cat<<-'HERE'  
>     Line 1 is good.
>     They are jack,marry and john.>     $WOW> HERELine 1 is good.They are jack,marry and john.$WOW

利用HERE Document ,打包C(或其它程式語言)的原始碼。這是Cracker散布安全性漏洞程式,最喜歡的方法
  1 #!/bin/bash  2 # Filename:create_prg.sh  3 echo "creating hello.c..."  4 echo  5 cat <<'EOF' > hello.c  6 #include <stdio.h>  7  8 int main()  9 { 10     printf("Hello world!\n"); 11     return 0; 12 } 13 EOF 14 15 echo "compiling hello.c..." 16 echo 17 #compile hello.c,create the excutable file 18 gcc -o hello hello.c 19 20 #if compile successfully,then excute it 21 if [ $? -eq 0 ];then 22     echo "excute hello..." 23     echo 24     chmod u+x hello 25     ./hello 26 else 27     echo 'Compile Error:hello.c' 28 fi
5到13行利用HERE Document夾帶了一個hello.c程式的原始碼,執行指令碼時會產生hello.c,接著調用gcc 編譯hello.c,若編譯無誤,就“執行”(開始攻擊)程式檔案hello. 這是shell script攜帶攻擊程式的原型。 執行結果:
[root@localhost sh]# ./create_prg.shcreating hello.c...compiling hello.c...excute hello...Hello world!





相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.