我正在研究一個具有全局變量的BASH腳本。變量的值在函數/子例程中改變。但是,當我嘗試在函數外部打印該變量時,該值不會改變。 示例代碼如下:全局變量的值在BASH中沒有變化
#!/bin/bash
count=
linux_f()
{
let count=100
}
linux_f
echo $count
echo語句打印空白,而不是100 爲什麼全局變量的值不會在功能和出穿越。
我正在研究一個具有全局變量的BASH腳本。變量的值在函數/子例程中改變。但是,當我嘗試在函數外部打印該變量時,該值不會改變。 示例代碼如下:全局變量的值在BASH中沒有變化
#!/bin/bash
count=
linux_f()
{
let count=100
}
linux_f
echo $count
echo語句打印空白,而不是100 爲什麼全局變量的值不會在功能和出穿越。
您的代碼對我的作品,打印100。這是我使用的代碼:
count=
linux_f()
{
let count=100
}
linux_f
echo $count
編輯:我已經嘗試過在MSYS上的bash版本2和Fedora Linux上的版本3,它對兩者都有效。你確定你正在執行該腳本嗎?嘗試在這裏放一個回聲「這就是它」,只是爲了確保顯示某些東西。除此之外,我不知所措。
該變量賦值中存在拼寫錯誤(在函數內部)。一旦固定它的工作:
[[email protected]:~]$ var=3
[[email protected]:~]$ echo $var
3
[[email protected]:~]$ function xxx(){ let var=4 ; }
[[email protected]:~]$ xxx
[[email protected]:~]$ echo $var
4
[[email protected]:~]$
,並運行一個腳本:
[[email protected]:~]$ cat test.sh
#!/bin/bash
var=
echo "var is '$var'"
function xxx(){ let var=4 ; }
xxx
echo "var is now '$var'"
[[email protected]:~]$ ./test.sh #/ <-- #this is to stop the highlighter thinking we have a regexp
var is ''
var is now '4'
[[email protected]:~]$
這是您的腳本中的錯字?你正在設置一個變量`countl`,但你試圖獲得`count`的值。 – dreamlax 2009-07-30 09:58:35
@dreamlax。是啊。對於錯字感到抱歉。現在糾正。 – Viky 2009-07-30 10:02:14
代碼錯誤修復後的作品 – rasjani 2009-07-31 09:30:56