簡體   English   中英

shell 腳本中的變量賦值約定

[英]Variable assignment convention in shell scripts

在 bash 腳本中, =號的兩邊似乎都不允許有空格。 例如:

# bad
a= "ok"
# bad
a ="ok"
# bad
a = "ok"
# good
a="ok"

這在所有shell種語言中都是一樣的,還是特定於 bash 的? 出於好奇,為什么賦值運算符旁邊不允許有空格?

對於特定的 shell,您需要查找 shell 的文檔。對於bash ,要求該形式中沒有空格(請注意=的兩邊都沒有空格):

變量可以通過name=[value]形式的語句賦值。

出現這種情況的原因之一是您可以使用命令時態賦值,其中變量僅在命令執行期間設置:

pax:~> x=314159 ; echo $x
314159
pax:~> x=42 bash -c 'echo $x'
42
pax:~> echo $x
314159

在作業中留有空格會使弄清楚作業在哪里結束以及命令從哪里開始變得有點困難。 例如:

x= echo echo hello

這應該將x設置為echo然后運行echo hello還是應該將x設置為""然后運行echo echo hello

如果你想讓你的作業很好地用空格格式化,你可以使用((...))算術評估:

pax:~> (( val = 117 / 3 )) ; echo $val
39

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM