簡體   English   中英

在shell腳本中使用數組變量初始化變量

[英]initialising a variable with array variables in shell script

我試圖使用數組變量連接字符串,但得到錯誤。

declare -a arr
arr=(one two three)
var= "${arr[0]}    ${arr[1]}"
echo $var

預期產出

one    two

(1到2之間有4個空格)

我收到以下錯誤: -

[wasadmin@gblabvl31 IBM]$ ./test.sh
./test.sh: line 10: one     two: command not found

這是否意味着我們不能使用數組元素(用作變量)分配變量? 另外一種方法是做什么的

您必須在=后刪除空格:

var="${arr[0]}    ${arr[1]}"

Bash支持一種語法,允許您在調用命令時臨時設置變量。 語法類似於VARNAME=somevalue command 這將執行命令,將(環境)變量VARNAMEsomevalue 如果你說VARNAME= command那么bash會將其解釋為VARNAME="" commandVARNAME="" command變量設置為空字符串。 在你的情況下,這會導致bash嘗試執行"${arr[0]} ${arr[1]}"部分,就像它是一個命令一樣。

您在作業中有一個額外的空間。 更換

var= "${arr[0]}    ${arr[1]}"
#   ^

var="${arr[0]}    ${arr[1]}"

您還應該引用echo的參數來保留其中的空格

echo "$var"

您看到錯誤消息的原因是,當等號后面有空格時,bash會將該命令解釋為指定名為var的空環境變量,然后嘗試執行命令"${arr[0]} ${arr[1]}"被評估為one two ,因而命令未找到錯誤

暫無
暫無

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

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