Bash

Bash 中的“聲明”是什麼?

  • August 26, 2021

在閱讀了 ilkkachu 對這個問題的回答後,我了解到內置的declare(帶參數)shell 的存在。-n

help declare帶來:

設置變數值和屬性。

聲明變數並賦予它們屬性。如果沒有給出名稱,則顯示所有變數的屬性和值。

-n … 使 NAME 成為對其值命名的變數的引用

我要求用一個例子進行一般性解釋,declare因為我不明白man. 我知道什麼是變數並對其進行擴展,但我仍然想念manon declare(變數屬性?)。

也許您想根據 ilkkachu 在答案中的程式碼來解釋這一點:

#!/bin/bash
function read_and_verify  {
   read -p "Please enter value for '$1': " tmp1
   read -p "Please repeat the value to verify: " tmp2
   if [ "$tmp1" != "$tmp2" ]; then
       echo "Values unmatched. Please try again."; return 2
   else
       declare -n ref="$1"
       ref=$tmp1
   fi
}

在大多數情況下,使用隱式聲明就足夠了bash

asdf="some text"

但是,有時您希望變數的值僅為整數(因此,如果以後它會更改,即使是自動更改,也只能更改為整數,在某些情況下預設為零),並且可以使用:

declare -i num

或者

declare -i num=15

有時你想要數組,然後你需要declare

declare -a asdf   # indexed type

或者

declare -A asdf   # associative type

bash例如,當您使用搜尋字元串“bash 數組教程”(不帶引號)瀏覽 Internet 時,您可以找到關於數組的好教程

linuxconfig.org/how-to-use-arrays-in-bash-script


我認為這些是聲明變數時最常見的情況。


另請注意,

  • 在函式中,declare使變數局部(在函式中)
  • 沒有任何名稱,它列出了所有變數(在活動 shell 中)
declare

最後,您可以通過命令簡要總結一下shell內置命令declare的功能bash

help declare

引用自:https://unix.stackexchange.com/questions/510220