linux shell 基礎語法A 1

2021-09-27 05:45:23 字數 2784 閱讀 3104

從echo開始

echo可以看做print printf之類的東西。幾乎所有的shell指令碼都離不開echo。

echo有如下幾個作用:

(1)輸出指令碼執行流程的提示資訊

(2)互動式指令碼列印提示資訊

(3)構建格式化的日誌

(4)除錯指令碼時,可以用來列印出一些中間變數的值(當然也可以用bash +x除錯執行指令碼)

常用的option

-n:不換行列印

-e:識別轉移字元(如\t)

許多指令碼的usage就是echo來實現的(cmd -h or cmd --help)。

變數變數分類:一般在shell中分為環境變數,使用者變數,位置變數等的特殊變數三大類。shell是一種弱型別語言(強型別語言c,變數定義後要強制變換才能使用另一種變數型別,而shell不關心,變數的型別依據使用環境自己變化)。

但我們還是可以把shell中使用變數分為幾個場景:

(1)字串

root@ubuntu-jpk:~# echo "hello world"

hello world

(2)數值

root@ubuntu-jpk:~# a=1

root@ubuntu-jpk:~# b=2

root@ubuntu-jpk:~# c=$((a+b))

root@ubuntu-jpk:~# echo $c

3(3)一維陣列(列表)

root@ubuntu-jpk:~# list=(china america japan)

root@ubuntu-jpk:~# echo $

china

root@ubuntu-jpk:~# echo $

america

(4)字典

例項 統計詞頻

#!/bin/bash

declare -a dict

while read word

doif [ ! -n dict[$] ]

then

dict[$]=1

else

let dict[$]++

fidone

echo -e "word\tcount"

for key inecho $

doecho -e "$key\t$"

done

root@ubuntu-jpk:/mnt/linux-shell-code/chapter2# cat testnum ab

bbcc

jpkjpk

aroot@ubuntu-jpk:/mnt/linux-shell-code/chapter2# cat testnum | bash dic.sh

word count

jpk 2

a 2b 3

c 2重定向

輸出重定向》 >>

輸入重定向<

重定向多用於列印日誌,和調整輸出。重定向輸出往往和檔案描述符結合使用

常見的檔案描述符有stdin0 stdout1 stderr2

(1)不想列印出錯誤資訊

root@ubuntu-jpk:/# asdas

asdas: command not found

root@ubuntu-jpk:/# asdasd 2>/dev/null

(2)執行輸出都列印到乙個檔案,包括錯誤

root@ubuntu-jpk:/mnt# asd >> testlog 2>&1

root@ubuntu-jpk:/mnt# date >> testlog 2>&1

root@ubuntu-jpk:/mnt# cat testlog

no command 'asd' found, but there are 22 similar ones

asd: command not found

thu aug 29 20:50:27 cst 2019

(3)執行輸出列印到乙個檔案,錯誤列印到另外乙個檔案

root@ubuntu-jpk:/mnt# date 1>>rightlog 2>>errorlog

root@ubuntu-jpk:/mnt# asd 1>>rightlog 2>>errorlog

root@ubuntu-jpk:/mnt# cat rightlog

thu aug 29 20:51:20 cst 2019

root@ubuntu-jpk:/mnt# cat errorlog

no command 'asd' found, but there are 22 similar ones

asd: command not found

在shell指令碼中不用每個命令都去後面都執行》 >

可以在指令碼開頭exec 1>file即可

輸入重定向了解即可

root@ubuntu-jpk:/mnt# wc

asdasdd

eof3 3 12

管道把前乙個命令的輸出對接到後乙個命令的輸入,管道對接的2個命令的檔案描述符。grep等常用管道來進行檢索。

root@ubuntu-jpk:/mnt# date | wc

1 6 29

root@ubuntu-jpk:/mnt# cat /etc/passwd |grep root

root:x:0:0:root:/root:/bin/bash

狀態碼0是正確,其他都有問題。

如果使用exit 退出指定退出碼大於255,就會對256取餘操作。

linux shell程式設計基礎(基本語法)

通過終端編寫指令碼程式,輔助開發人員完成工程自動化操作 直接執行 需要執行許可權 列印完不換行 可以不加雙引號,但規範寫法要新增 不顯示輸入資訊 賦值 可以用雙引號也可以不用雙引號 name jackecho name name echo 001 if 條件 then 條件為true執行的 fiif...

linux shell 基本語法

從程式設計師的角度來看,shell本身是一種用c語言編寫的程式,從使用者的角度來看,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用 shell指令碼程式設計,完成更加複雜的操作。在linux gui日益完善的今天,在系統管理等領域,shell程式設計仍然起著不...

Linux shell基本語法

1.shell變數 一般shell的變數賦值的時候不用帶 而使用或者輸出的時候要帶 加減乘除的時候要加兩層小括號。括號外面要有乙個 括號裡面的變數可以不用 需要注意的是,變數賦值,變數使用的時候不能有空格,否則會被解析成命令,報錯無此命令。bin bash a 1b 2 c a b echo c e...