歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> shell編程之基礎

shell編程之基礎

日期:2017/3/2 17:14:20   编辑:SHELL編程

1、初探shell


#!/bin/bash
echo -e 'hello \nworld'

執行結果

echo 是打印輸出字符,-e選項是開啟轉義功能

注意:

在windows下編寫的shell腳本直接拿到linux下是無法執行的,因為兩個的行結束標志不同

  • 直接將windows下的文件copy到linux,查看其格式

  

  在圖中的bash後面是一個回車,通過cat -A 來查看文件中所有字符時可看到這個回車是^M$

  • 查看linux下的回車

  

兩個的行結束標志不同,所以會導致shell腳本執行不成功

  • 解決方式,通過dos2unix來進行格式轉換

  

2.歷史命令



  • 執行history

  

  想要執行哪條命令使用 !行號

  甚至用!字符串,如!hist都可以執行該命令

3.輸出重定向


  • cat hello.sh > he.sh將標准輸出重定向到he.sh,先清空he.hs再將結果輸出到he.sh

  • cat hello.sh >> he.sh 以追加的方式輸出到he.sh中
  • cat hello.sh 2> he.sh 將標准出錯輸出到文件中
  • cat hello.sh &> hello.sh 將正確和錯誤都寫到文件中
  • ls >> tfg 2>>efg 將命令的正確結果保存到tfg,將錯誤結果保存早efg中

4.shell中的通配符


特殊字符

  ‘bbb\nbbb$name’ 單引號中的字符都被認為是普通字符

  “bbbb\nbbb$name” 雙引號中的字符被賦予特殊含義,如\n表示轉義,$name表示一個變量

$() 將會引用系統命令,如 echo $(date) 與 date的效果一樣

5.shell中的變量


  • 變量值的拼接

  name = 123

  name = ${name}456

  這時name的值為123

  • 接受用戶向sh腳本中傳遞的值

  

  一個簡單的例子

  

  

  這裡進行了數字相加運算,兩個變量在數值相加的時候必須使用$(())將其包起來

  •  $* 與 $@

  $*是將輸入參數看成一個整體,像字符串;而$@將參數分開對待,就像一個數組

  

  

6、預定義變量


  

  

  代碼中的& 是讓find命令在後台運行

  

Copyright © Linux教程網 All Rights Reserved