Shell中變數作用域的介紹與使用命令

2022-09-28 21:09:37 字數 1375 閱讀 3676

前言

眾所周知shell 中的變數只作用於當前程序。如需在子程序中建立副本可使用 export 內建命令。 有時使用臨時變數語法可以非常方便。

變數使用

例如:url=

echo $url

export 到子程序

通常變數是不需要 export 的,但是當你需要把乙個工作分割成若個小的任務, 分別用乙個指令碼來實現的時候,就需要把變數名傳遞給它們。 比如有乙個 spider.sh 來獲**任意 url 到臨時目錄:

#!/usr/bin/env bash

curl $url > $tmpdir/$random.html

我們程式設計客棧需要將當前指令碼中的 url 傳遞給spider.sh:

export url=

bash ./spider.sh

# 等價於(如果該檔案有可執行許可權的話)

./spider.sh

值得注意的是export只會在子程序中建立變數的副本,即spider.sh對它的改動不會體現在當前程序。

在當前程序執行指令碼

使用 source 或 . 內建命令可以在當前程序執行另乙個指令碼,因此當前上下文的變數對該指令碼是可見的。

url=

source ./spider.sh

# 等價於

. ./spider.sh

臨時設定環境變數

根據 shell 語法,在乙個簡單命令前可以包含任意個賦值語句。這些變數賦值將會在執行命令前展開,等效於臨時的環境變數。

a 「****** command」 is a sequence of optional variable assignments and redirections, in any sequence, optionally followed by words and redirections, terminated by a control operator. – ****** commands, shell commands

例如下面命令可以把urlluesqua變數傳遞給spider.sh:

url= bash ./spider.sh

這是一條 簡單命令,下面的多條命令或 組合命令:

url=; bash ./spider.sh www.cppcns.com# 兩條命令,只作用於當前程序

url= && bash ./spider.sh # 組合命令,只作用於當前程序

export url=; bash ./spider.sh # 兩條命令,作用於父子程序

簡單命令中的變數賦值也不作用於當前程序。例如下面的**將會輸出空行:

url= echo $u程式設計客棧rl

總結本文標題: shell中變數作用域的介紹與使用命令

本文位址: /os/linux/199702.html

shell變數作用域

在shell中定義函式可以使 模組化,便於復用 不過指令碼本身的變數和函式 的變數的作用域問題可能令你費解,在這裡梳理一下這個問題。1 shell指令碼中定義的變數是global的,其作用域從被定義的地方開始,到shell結束或 被顯示刪除的地方為止。例1 指令碼變數的作用域 bin bash de...

Shell變數作用域

變數作用域就是變數的有效範圍,shell中變數作用域有三種 1.全域性變數 在當前shell中任何地方使用的變數。2.區域性變數 只能在函式內使用的變數。3.環境變數 可以在任何shell中使用的變數。在當前shell中任何地方都能使用,不同shell中的全域性變數互不影響,在shell中定義的變數...

Shell中指令碼變數的作用域

在shell中定義函式可以使 模組化,便於復用 不過指令碼本身的變數和函式 的變數的作用域問題可能令你費解,在這裡梳理一下這個問題。1 shell指令碼中定義的變數是global的,其作用域從被定義的地方開始,到shell結束或 被顯示刪除的地方為止。例1 指令碼變數的作用域 bin bash de...