[英]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
。 這將執行命令,將(環境)變量VARNAME
為somevalue
。 如果你說VARNAME= command
那么bash會將其解釋為VARNAME="" command
, VARNAME="" 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.