日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Bash

發布時間:2023/12/13 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 Bash 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當我們登陸到終端機(tty)之后,Linux會依據/etc/passwd中的設置給我指定一個shell(默認是bash,即B-shell),然后就可以使用這個shell做相關的操作了,下面記錄bash的詳細內容。

shell是面向命令處理的語言,提供的流程控制結構通過對一些內部命令的解釋實現

一、一個bash的例子:listdir

#!/bin/sh
if [ $# = 0 ]
then 
  dir=.
else
  dir=$1
fi
find $dir -type d –print

這里就是列出目錄,$#參數個數,$1第一個參數,具體后面詳見后面

二、輸入重定向

<filename 
從文件filename中獲取stdin
例如: sort < telno.txt

三、sh變量

變量存儲的是字符串,執行過程中可以被修改,第一個字符是字母,后面是字母數字下劃線都可以

賦值和引用

arg=123321nsad

echo $arg

echo ${arg} 加上了{}可以顯式的決定變量的邊界

注意賦值的時候等號兩邊不能加空格,引用的時候用$引用,bash自動完成變量的替換

變量沒定義,就是空串

只讀變量

arg=123
readonly arg

這樣就不能對于只讀變量的值進行修改了

刪除變量

unset arg

unset不能刪除只讀變量

echo命令

echo arg1 arg2 arg3 ...

打印各命令行參數,每兩個間用一空格分開,最后打印換行符
-e 開啟轉義,常見的轉義有:

c 打印完畢,不換行   退格
 
 換行    回車 	 水平制表 \ 反斜線
 
nn    八進制描述的字符ASCII碼

還有printf命令,與c語言的printf很相似

read

從標準輸入讀入一行內容賦值給變量

read xxx 這樣就能把輸入的值賦給xxx

字符串

#字符串的拼接
name=liangzhuang
string="thu name is ${name}!"
#獲取字符串長度
string="the string"
echo ${#string}
#提取子字符串
echo ${string:1:4}   #輸出the 
#查找子字符串的位置
echo `expr index "$string"  t`  # 輸出t的匹配的位置

數組array_name=(value0 value1 value2 value3)array_name[0]=value0

array_name[1]=value1
array_name[n]=valuen
#獲得數組元素
valuen=${array_name[n]}
#獲得數組的所有元素
echo ${array_name[@]} 
或者
echo ${array_name[*]} #數組長度 ${#array_name[@]} 或者 ${#array_name[*]} # 取得數組單個元素的長度,就是第n個元素的具體長度 lengthn=${#array_name[n]}

參數傳遞

$0 為執行的文件名
$i  第i個參數,i超過9 應該為${i}
$# 參數個數
$$ 當前腳本運行的進程號
$- 顯示Shell使用的當前選項,與set命令功能相同。
$? 上一條命令是否執行成功 ,0表示成功
$* 與 $@ 都是表示全部參數,前者把參數作為一個字符串,后者保留n個參數的n個字符串

算數運算符

一般是調用 expr 進行算數運算的
echo `expr $a + $b` 
echo `expr $a * $b`
echo `expr $a / $b` 
echo `expr $a % $b`
#這個每個符號兩邊都要加空格,除法就是int型的運算規則,截尾

[ $a == $b ]  相等判斷
[ $a != $b ]  相等判斷
a=$b 賦值

關系運算符

只支持數字,不支持字符串
    [ $a -eq $b ] 
    [ $a -ne $b ] 
    [ $a -gt $b ] 
    [ $a -lt $b ] 
    [ $a -ge $b ]
    [ $a -le $b ]

布爾運算符

    [ ! false ] 返回 true。
    [ $a -lt 20 -o $b -gt 100 ]
    [ $a -lt 20 -a $b -gt 100 ] 

字符串運算符

[ $a = $b ] 
[ $a != $b ] 
[ -z $a ]   長度為0返回true
[ -n $a ]  長度不為0返回true
[ $a ]       不為空返回true

文件測試運算符

-rwx 權限
-s 文件是否為空,不為空為true
-e 檢測文件(包括目錄)是否存在,如果是,則返回 true。
-bcdf 文件類型
使用例子
[-r $file] 判斷文件是否可讀

以上的[] 實際上是與test命令等價的

輸入輸出重定向

輸出重定向會覆蓋文件內容,如果不希望文件內容被覆蓋,可以使用 >> 追加到文件末尾
ech “追加文字" >> file

#輸入重定向
command1 < file1  #把file1作為命令的輸入

一般情況下,每個 Unix/Linux 命令運行時都會打開三個文件:
   標準輸入文件(stdin):stdin的文件描述符為0,Unix程序默認從stdin讀取數據。
   標準輸出文件(stdout):stdout 的文件描述符為1,Unix程序默認向stdout輸出數據。
   標準錯誤文件(stderr):stderr的文件描述符為2,Unix程序會向stderr流中寫入錯誤信息。
默認情況下,command > file 將 stdout 重定向到 file,command < file 將stdin 重定向到 file。
command 2 >> file       把錯誤輸出 追加到file
command > file 2>&1     先把命令輸出重定向到file,在把錯誤重定向到stdout,此時stdout就是 file
command < file1 >file2  command 命令將 stdin 重定向到 file1,將 stdout 重定向到 file2
command > /dev/null 2>&1 禁止該命令輸出任何內容

n>file 將文件描述符為 n 的文件重定向到 file。
n>>file 將文件描述符為 n 的文件以追加的方式重定向到 file。

流程控制!!


總結

以上是生活随笔為你收集整理的Bash的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。