Shell基础知识(三)
生活随笔
收集整理的這篇文章主要介紹了
Shell基础知识(三)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Shell中變量的作用域:
func
echo $a 輸出 >> 99 為了讓全局變量變成局部變量 #!/bin/bash function func() { local a=99 }
func
echo $a 輸出為空,說明此時(shí)變量a是局部變量 環(huán)境變量: 在父Shell中定義的變量,在子Shell中可以調(diào)用。
Shell位置參數(shù) 1) 給腳本傳遞位置參數(shù) 在運(yùn)行shell腳本的時(shí)候可以帶入一些位置參數(shù),在腳本中$n來接收參數(shù)的值。如下: #!/bin/bash echo "language: $1" echo "username: $2" 運(yùn)行: >> bash filename.sh Chinese mocun 輸出: >> language: Chinese >> username: mocun 2) 給函數(shù)傳遞位置參數(shù) #!/bin/bash function func() { echo "language: $1" echo "username: $2" }
func c++ mocun 這時(shí)就不能在運(yùn)行的時(shí)候通過命令傳入了,直接在腳本中調(diào)用函數(shù)的同時(shí)給參數(shù)就行。 輸出: >> language: c++ >> username: mocun 如果參數(shù)過多,超過10個(gè)了,那么就需要用${n}來接收,幫助解釋器明確參數(shù)的邊界,如:${11}
特殊變量
示例,文件名為test.sh: #!/bin/bash echo "Process ID: $$" echo "File Name: $0" echo "First Parameter: $1" echo "Second Parameter: $2" echo "All Parameters 1: $@" echo "All Parameters 2: $*" echo "Total: $#" 運(yùn)行命令: >> bash test.sh yinzm mocun 輸出
echo "print each param from \"\$@\"" for var in "$@" do echo "$var" done 運(yùn)行: >> bash filename.sh a b c 輸出:
- 在當(dāng)前Shell會(huì)話中使用,全局變量。
- 在函數(shù)內(nèi)部使用,局部變量。
- 可以在其他Shell會(huì)話中使用,環(huán)境變量。
func
echo $a 輸出 >> 99 為了讓全局變量變成局部變量 #!/bin/bash function func() { local a=99 }
func
echo $a 輸出為空,說明此時(shí)變量a是局部變量 環(huán)境變量: 在父Shell中定義的變量,在子Shell中可以調(diào)用。
Shell位置參數(shù) 1) 給腳本傳遞位置參數(shù) 在運(yùn)行shell腳本的時(shí)候可以帶入一些位置參數(shù),在腳本中$n來接收參數(shù)的值。如下: #!/bin/bash echo "language: $1" echo "username: $2" 運(yùn)行: >> bash filename.sh Chinese mocun 輸出: >> language: Chinese >> username: mocun 2) 給函數(shù)傳遞位置參數(shù) #!/bin/bash function func() { echo "language: $1" echo "username: $2" }
func c++ mocun 這時(shí)就不能在運(yùn)行的時(shí)候通過命令傳入了,直接在腳本中調(diào)用函數(shù)的同時(shí)給參數(shù)就行。 輸出: >> language: c++ >> username: mocun 如果參數(shù)過多,超過10個(gè)了,那么就需要用${n}來接收,幫助解釋器明確參數(shù)的邊界,如:${11}
特殊變量
| 變量 | 含義 |
| $0 | 當(dāng)前腳本的文件名 |
| $# | 傳遞給腳本或者函數(shù)的參數(shù)個(gè)數(shù) |
| $* | 傳遞給腳本或者函數(shù)的所有參數(shù) |
| $@ | 傳遞給腳本或者函數(shù)的所有參數(shù)。當(dāng)被雙引號(hào)包含時(shí),與上述$*有所不同。 |
| $? | 上個(gè)命令的退出狀態(tài) |
| $$ | 當(dāng)前Shell的進(jìn)程ID。對(duì)于Shell腳本,就是這些腳本所在的進(jìn)程ID。 |
Process ID: 39817
File Name: seventh.sh
First Parameter: yinzm
Second Parameter: mocun
All Parameters 1: yinzm mocun
All Parameters 2: yinzm mocun
Total: 2
$*與$@的區(qū)別 簡單說,當(dāng)兩個(gè)參數(shù)沒有被雙引號(hào)包含時(shí)是一模一樣的效果,都是接收若干個(gè)獨(dú)立的參數(shù)。但是當(dāng)被雙引號(hào)包含時(shí),$*會(huì)將得到的所有參數(shù)拼在一起,但是$@仍然是若干個(gè)獨(dú)立的參數(shù)。 示例,文件名filename.sh: #!/bin/bash echo "print each param from \"\$*\"" for var in "$*" do echo "$var" doneecho "print each param from \"\$@\"" for var in "$@" do echo "$var" done 運(yùn)行: >> bash filename.sh a b c 輸出:
print each param from "$*"
a b c
print each param from "$@"
a
b
c
$?的作用 1.獲取上一個(gè)命令的退出狀態(tài) 2.獲取函數(shù)的返回值?
轉(zhuǎn)載于:https://www.cnblogs.com/yinzm/p/10325056.html
總結(jié)
以上是生活随笔為你收集整理的Shell基础知识(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker ASP.NET Core
- 下一篇: innobackupex 数据库备份