#!/bin/bash
set -x
array_counter=0
array_value=1
array=(0 0 0)
for number in ${array[@]}
do
array[$array_counter]="$array_value"
array_counter=$(($array_counter + 1))
done
जब स्क्रिप्ट ऊपर चल रहा है मैं निम्नलिखित डिबग आउटपुट मिलता है:बाश सरणी अनुक्रमणिका के रूप में परिवर्तनीय?
+ array_counter=0
+ array_value=1
+ array=(0 0 0)
+ for number in '${array[@]}'
+ array[$array_counter]=1
+ array_counter=1
+ for number in '${array[@]}'
+ array[$array_counter]=1
+ array_counter=2
+ for number in '${array[@]}'
+ array[$array_counter]=1
+ array_counter=3
क्यों चर $ array_counter नहीं का विस्तार जब सरणी में [] सूचकांक के रूप में इस्तेमाल किया?
यह नहीं क्या कर रहा है कि आप उम्मीद:
आप अपने सूचकांक बढ़ाने के और अधिक कारगर तरीका कोशिश कर सकते हैं? आपके लूप के बाद, सरणी "1 1 1" –
है, मैं डीबग आउटपुट सरणी [0] = 1, सरणी [1] = 1 और इतने पर दिखाने की अपेक्षा करता हूं। –
आह, आप डीबग आउटपुट के बारे में चिंतित हैं। मैं वास्तव में आश्चर्यचकित हूं कि यह बिना किसी 'eval' के काम करता है, लेकिन यह हो सकता है कि lhs arrays अलग-अलग विस्तारित हो जाएं। –