답변:
arr=("new_element" "${arr[@]}")
일반적으로 그렇습니다.
arr=("new_element1" "new_element2" "..." "new_elementN" "${arr[@]}")
arr=( "${arr[@]}" "new_element" )
또는 대신
arr+=( "new_element" )
일반적으로 그렇습니다.
arr=( "${arr[@]}" "new_element1" "new_element2" "..." "new_elementN") #Or
arr+=( "new_element1" "new_element2" "..." "new_elementN" )
Index2 arr [2] 의 위치에 요소를 추가한다고 가정 하면 실제로 하위 배열 아래에서 병합을 수행합니다.
인덱스 위치가 2 인 모든 요소를 마지막 arr [2] , arr [3] , ... 로 가져옵니다 .
arr=( "${arr[@]:0:2}" "new_element" "${arr[@]:2}" )
배열 (요소 # 2)에서 요소를 제거하는 것 외에도 두 개의 하위 배열을 연결해야합니다. 첫 번째 하위 배열은 요소 # 2 앞에 요소를 보유하고 두 번째 하위 배열은 요소 # 2 뒤에 요소를 포함합니다.
arr=( "${arr[@]:0:2}" "${arr[@]:3}" )
${arr[@]:0:2}
얻을 두 요소 [0], 언 과 [1], 언 어레이의 처음부터 시작한다.${arr[@]:3}
index3 arr [3] 에서 마지막 요소까지 모든 요소를 가져옵니다 .요소를 제거하는 또 다른 가능성은
사용 unset
(실제로 'null'값을 요소에 지정)
unset arr[2]
요소의 가치를 알고 있다면 바꾸기 패턴을 사용하십시오.
arr=( "${arr[@]/PATTERN/}" )
arr+=(element)
및 unset arr[2]
(이해야한다 unset -v 'arr[2]'
!), 비 스파 스 배열을 가정합니다. 또한 arr=( "${arr[@]/PATTERN/}" )
요소 수는 변경되지 않습니다. 빈 문자열로 바꾸면됩니다.
에서 그 배열 주 bash
(KSH에서 복사)이 아니라 연관 배열됩니다.
a=(newvalue "$a[@]")
키와 숫자 키 1, 2를 사용하여 원래 배열의 요소 $a
와 newvalue
as를 사용하여 새 배열을 만듭니다 ${a[0]}
.
예를 들어 다음과 같은 경우
bash-4.4$ typeset -p a
declare -a a=([0]="foo" [12]="bar")
bash-4.4$ a=(newvalue "${a[@]}")
bash-4.4$ typeset -p a
declare -a a=([0]="newvalue" [1]="foo" [2]="bar")
내장 연산자가없는 이유를 설명합니다.
newvalue
as 를 삽입하고 ${a[0]}
다른 모든 키를 하나씩 바꾸려면 임시 배열이 필요합니다.
b=newvalue
for k in "${!a[@]}"; do
b[k+1]=${a[k]}
done
unset a
for k in "${!b[@]}"; do
a[k]=${b[k]}
done
unset b
일반 배열이 zsh
있거나 비슷한 쉘에는 다음과 같은 yash
연산자가 있습니다.
zsh
:
a[1,0]=newvalue
(문자열을 스칼라 변수 앞에 추가하는 경우에도 작동)
yash
:
array -i a 0 newvalue
# array declaration
arr=()
#Function to read data from file a and add into array
fun_add_in_array()
{
input=$1
while IFS=',' read -r f1 f2
do
echo "Element1 : $f1"
echo "Element2 : $f2"
arr+=( "$f1" )
done < "$input"
}
#Function to print a array
fun_read_array()
{
arr=("$@")
for i in "${arr[@]}"
do
echo $i
done
}
ARRAY+=('foo')