shell 相關的基礎知識

2021-07-25 12:13:09 字數 2585 閱讀 2402

var=value

var="value $"

var='$var'

mv /usr/bin/file

# 可以擴充套件為1到50

# a b c .. z

將/usr/bin下的file檔案生命名為file.bak,通過 可以不用多敲一遍路徑

$

如果存在變數var則給出字串長度,否則輸出0

$0 or $shell

env

$uid 使用者id,root使用者id為0

$ps1 命令列提示符

$path 環境變數

$home 家目錄

$pwd 當前目錄

$user 當前使用者

$? 上乙個命令執行後的退出狀態,0 ->成功執行

let (()) 

expr bc

#!/bin/bash

# mathdemo.sh

no1=34

no2=20

let result=no1+no2

echo

$result

res=$[ no1 - no2 ]

ans=$((no1+no2))

ans2=$(expr 3 + 4)

echo

$res

echo

$ans

echo

$ans2

echo

'4*2.89' | bc

stdin

0stdout

1stderr

2< 定向到標準輸入流

> 定向到標準輸出流

2> 定向到標準錯誤流

>> 追加

&> 將stdout 與 stderr 合併並進行重定向

0,1,2是stdin,stdout和stderr的預留描述符。

檔案開啟模式:

- 唯讀模式 <

- 截斷模式 >

- 追加模式 >>

# 建立乙個檔案描述符進行讀取

exec 3

< read.file

# 建立乙個檔案描述符進行截斷寫入

exec 4> write.file

# 建立乙個檔案描述符進行檔案的追加

#!/bin/bash

# 陣列索引從0開始

array=(123

45)index=2

echo

$echo

$#列印出所有陣列的值

echo

$echo

$# 列印陣列長度

echo

$

關聯陣列:

declare -a ass_array

ass_array=([index1]=varlue1 [index2]=varlue2)

# 列出陣列索引

echo

$echo

$

# 設定讀取密碼時不輸出到終端

stty -echo

read password

stty echo

echo input passworld success

bash -x script.sh 

-x#將指令碼中執行過的每一行都輸出到stdout

set -x

set +x 禁止除錯

set -v

set +v 禁止列印輸入

通過選項-x可以啟動除錯shell指令碼

function fname()

orfname()

fname #執行函式

fname arg1 arg2 #傳遞引數

$1 第乙個引數

$2 第二個引數

$@ 可以擴充套件為"$1"

"$2"

...export -f fname #匯出函式,函式擴充套件到子程序

cmd_output=$(command)

cmd_output=`command`

可以通過子shell讀取命令的輸出

(command)   #會在乙個子程序中執行

out="$(cat file)"

#通過引號引用子shell可以保留空格與換行

#!/bin/bash

# 不回顯地讀取資料

read

-s var

# 顯示提示資訊

read -p "prompt: " var

# 在2秒內讀取資料

read -t 2 var

# e用定界符結束輸入行

read

-d":" var

ifs 預設為空白字元

SHELL 基礎知識

1 什麼是shell?shell的本意是 殼 的意思,其實已經很形象地說明了shell在linux系統中的作用。shell就是圍繞在linux核心之外的乙個 殼 程式,使用者在作業系統上完成的所有任務都是通過shell與linux系 統核心的互動來實現的。shell本身是乙個c語言編寫的程式,是使用...

shell 基礎知識

預設變數 傳入指令碼的命令列引數個數 所有命令列引數值,在各個引數值之間留有空格 0 命令本身 shell檔名 1 第乙個命令列引數 2 第二個命令列引數 區域性變數 在變數首次被賦值時加上local 關鍵字可以宣告乙個區域性變數,例s3 bin bash hello var1 echo hello...

shell 基礎知識

預設變數 傳入指令碼的命令列引數個數 所有命令列引數值,在各個引數值之間留有空格 0 命令本身 shell檔名 1 第乙個命令列引數 2 第二個命令列引數 區域性變數 在變數首次被賦值時加上local 關鍵字可以宣告乙個區域性變數,例s3 bin bash hello var1 echo hello...