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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux中变量#,@,0,1,2,*,$$,$?的含义

發(fā)布時(shí)間:2023/11/30 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux中变量#,@,0,1,2,*,$$,$?的含义 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

$# 是傳給腳本的參數(shù)個(gè)數(shù)

$0 是腳本本身的名字

$1 是傳遞給該shell腳本的第一個(gè)參數(shù)

$2 是傳遞給該shell腳本的第二個(gè)參數(shù)

$@ 是傳給腳本的所有參數(shù)的列表

$* 是以一個(gè)單字符串顯示所有向腳本傳遞的參數(shù),與位置變量不同,參數(shù)可超過(guò)9個(gè)

$$ 是腳本運(yùn)行的當(dāng)前進(jìn)程ID號(hào)

$? 是顯示最后命令的退出狀態(tài),0表示沒(méi)有錯(cuò)誤,其他表示有錯(cuò)誤

$-記錄著當(dāng)前設(shè)置的shell選項(xiàng)


? 區(qū)別:@* ? 相同點(diǎn):都是引用所有參數(shù)

  • 不同點(diǎn):只有在雙引號(hào)中體現(xiàn)出來(lái)。假設(shè)在腳本運(yùn)行時(shí)寫了三個(gè)參數(shù)(分別存儲(chǔ)在12 3)則"*" 等價(jià)于 “12 3"(傳遞了一個(gè)參數(shù));而“@" 等價(jià)于 "1""2" "$3"(傳遞了三個(gè)參數(shù))

例子一

##dels.sh

echo "number:$#"

echo "scname:$0"

echo "first :$1"

echo "second:$2"

echo "argume:$@"

echo "show parm list:$*"

echo "show process id:$$"

echo "show precomm stat: $?"

執(zhí)行結(jié)果


[@jihite]$ sh del.sh 1 2 3

number:3

scname:del.sh

first: 1

second:2

argume:1 2 3

show parm list:1 2 3

show process id:21057

show precomm stat: 0

例子二

#!/bin/sh

num=$#

name=$0

echo "number:$num"

echo "scname:$name"

echo $0

echo $1

echo $2


for ((i=0; i<$num; i++))

do

? ? echo "$i"

done


echo "argume:$@"

for key in $@

do

? ? echo $key

done

echo "-----------------"

for key in "$@"

do

? ? echo $key

done

echo "-----------------------------"

for key2 in $*

do?

? ? echo $key2

done

echo "-----------------"

for key2 in "$*"

do?

? ? echo $key2

done


echo "show process id:$$"

cho

echo "show precomm stat: $?"

執(zhí)行結(jié)果


[@jihite]$ sh del.sh a b ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

number:2

scname:del.sh

del.sh

a

b

0

1

argume:a b

a

b

-----------------

a

b

-----------------------------

a

b

-----------------

a b

show process id:23582

del.sh: line 37: cho: command not found

show precomm stat: 127


問(wèn)題:

echo #0 #1 能不能用 $i 表示呢?



$-記錄著當(dāng)前設(shè)置的shell選項(xiàng),himBH是默認(rèn)值,5個(gè)字母分別有各自含義。解釋如下:

  • hhashall,打開(kāi)這個(gè)選項(xiàng)后,Shell 會(huì)將命令所在的路徑記錄下來(lái),避免每次都要查詢。舉例:當(dāng)h選項(xiàng)開(kāi)啟時(shí),如果將某個(gè)自定義命令從/usr/bin/目錄下移動(dòng)到/usr/local/bin/,再運(yùn)行,會(huì)提示無(wú)此命令。而當(dāng)通過(guò)set +hh選項(xiàng)關(guān)閉后,上述情況就不會(huì)出現(xiàn)。
  • iinteractive-comments,包含這個(gè)選項(xiàng)說(shuō)明當(dāng)前的 shell 是一個(gè)交互式的 shell。所謂的交互式shell,就是輸入命令后,shell解釋執(zhí)行,然后返回一個(gè)結(jié)果。在腳本中,i選項(xiàng)是關(guān)閉的。
  • mmonitor,打開(kāi)監(jiān)控模式,就可以通過(guò)Job control來(lái)控制進(jìn)程的停止、繼續(xù),后臺(tái)或者前臺(tái)執(zhí)行等。
  • Bbraceexpand,大括號(hào)擴(kuò)展。舉例如下:

lenovo@lenovo-DK ~

$ ls

A_File

?

lenovo@lenovo-DK ~

$ cp A_File{,.back_up}

?

lenovo@lenovo-DK ~

$ ls

A_File? A_File.back_up

? ? ? ? 如果關(guān)閉B選項(xiàng),那么shell就不會(huì)將大括號(hào)擴(kuò)展。

? ? 5.? HhistoryShell 會(huì)把我們執(zhí)行的命令記錄下來(lái),可以通過(guò) history 命令查看,每一行是序號(hào) + 執(zhí)行的命令,在 shell 退出時(shí),會(huì)將這些信息保存到~/.bash_history 文件中。如果H選項(xiàng)打開(kāi),就可以展開(kāi)歷史列表中的命令,可以通過(guò)!感嘆號(hào)來(lái)完成,例如"!!"返回上最近的一個(gè)歷史命令,"!n"返回第 n 個(gè)歷史命令,等等。

總結(jié)

以上是生活随笔為你收集整理的Linux中变量#,@,0,1,2,*,$$,$?的含义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。