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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Shell编程之变量赋值和引用

發布時間:2024/8/23 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell编程之变量赋值和引用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux的shell編程是一種非常成熟的編程語言,它支持各種類型的變量。有三種主要的變量類型:環境變量、內部變量和用戶變量。

  • 環境變量(environment variable)是系統環境的一部分,不必去定義它們。可以在shell程序中使用它們,某些變量(比如PATH)還能在shell中加以修改。
  • 內部變量(built-in variable)是由系統提供的。與環境變量不同,你不能修改它們。
  • 用戶變量(user variable)是你在編寫shell腳本時定義的。可以在shell程序內任意使用它們和修改它們。

shell編程和其他編程語言的主要不同之處是:在shell編程中,變量是非類型性質的。也就是說,不必指定變量是數字還是字符串。

用戶變量

Shell編程中,使用用戶變量無需事先聲明,同時變量名的命名須遵循如下規則:

1). 首個字符必須為字母(a-z,A-Z);
2). 中間不能有空格,可以使用下劃線(_) ;
3). 不能使用標點符號 ;
4). 不能使用bash里的關鍵字(可用help命令查看保留關鍵字) 。

變量賦值

變量賦值的格式:

變量名=值

訪問變量值

要取用一個變量的值,只需在變量名前面加一個$ 。

( ATTENTION: Don't keep blank between the variable with the equal operator '=' )

舉例

#!/bin/bash
# 對變量賦值:
a="hello world"? #等號兩邊均不能有空格存在

# 打印變量a的值:
echo -e "A is: $a\n"

備注:

1). bash中變量賦值,等號兩邊均不能有空格存在;

使用自己喜歡的編輯器,輸入上述內容,并保存為文件test_hello.bsh,然后執行 chmod +x test_hello.bsh使其具有執行權限,最后輸入 ./test_hello或bash test_hello.bsh執行該腳本。

程序運行結果:?

A is: hello world

有時候變量名可能會和其它文字混淆,比如:

num=1
echo "this is the $numst"

上述腳本并不會輸出"this is the 1st"而是"this is the ";

這是由于shell會去搜索變量numnd的值,而實際上這個變量并未賦值。

我們可以用花括號來告訴shell把num變量跟其他部分分開:

num=1
echo "this is the ${num}st"

程序運行結果:

this is the 1st


位置參數

可以編寫一個shell腳本,當從命令行或者從其他shell腳本中調用它的時候,這個腳本接受若干參數。這些選項是通過Linux作為位置參數(position parameter)提供給shell程序的。位置參數有由系統給出的專用名。存放在變量中的第一個參數名為1(數字1),在程序內可以使用$1來訪問;存放在變量中的第二個參數名為2,在程序中可以使用$2來訪問,依此類推。在調用shell程序時,可以省略一個或幾個數字大的位置 參數。

例如,如果shell程序mypgm1要求兩個參數(比如名字和姓氏),那么可以只用一個參數(名字)來調用這個shell程序。但是,你不能只用第二個參數(姓氏)來調用shell程序。

#!/bin/bash #name display program if [ $# -eq 0 ]; thenecho "Name not provided." elseecho "Your name is $1." fi
在bash中,可以像下面 這樣執行mypgm1:
# . mypgm1
那么會得到下面的輸出:
Name not provided.
但是,如果像下面這樣執行mypgm1:
# . mypgm1 david那么會得到下面的輸出:
Your name is david.
shell程序mypgm1還說明了shell編程的另一個方面,即內部變量。在mypgm1中,變量$#是一個內部變量,它提供傳送給這個shell程序的位置參數的數量。

內部變量

內部變量是Linux所提供的一種特殊類型的變量,這類變量在程序中用來作出判斷。在shell程序內這類變量的值是不能修改的。

部分內部變量總結如下:

表 1.1.?常用內部變量

$0相當于C語言main函數的argv[0]
$1、$2...這些稱為位置參數(Positional Parameter),相當于C語言main函數的argv[1]、argv[2]...
$#相當于C語言main函數的argc - 1,注意這里的#后面不表示注釋
$@表示參數列表"$1" "$2" ...,例如可以用在for循環中的in后面。
$?上一條命令的Exit Status
$$當前Shell的進程號

為了說明這些變量的用法,這里有一個叫做mypgm2的示范程序:

#!/bin/bash #my test program echo "Number of parameter is $#" echo "Program name is $0" echo "Parameters as a single string is $*"
在bash中,如果從命令行上執行mypgm2,如下所示:

# . mypgm2 David Victor
那么會得到下面的結果:

Number of parameters is 2 Program name is mypgm2 Parameters as a single string is David Victor

轉載于:https://www.cnblogs.com/java20130726/archive/2012/05/17/3218588.html

總結

以上是生活随笔為你收集整理的Shell编程之变量赋值和引用的全部內容,希望文章能夠幫你解決所遇到的問題。

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