Bash
Bash 中的“聲明”是什麼?
在閱讀了 ilkkachu 對這個問題的回答後,我了解到內置的
declare
(帶參數)shell 的存在。-n
help declare
帶來:設置變數值和屬性。
聲明變數並賦予它們屬性。如果沒有給出名稱,則顯示所有變數的屬性和值。
-n … 使 NAME 成為對其值命名的變數的引用
我要求用一個例子進行一般性解釋,
declare
因為我不明白man
. 我知道什麼是變數並對其進行擴展,但我仍然想念man
ondeclare
(變數屬性?)。也許您想根據 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