bash переменные массива сценариев в цикле for - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь написать bash скрипт, который получает 3 аргумента путей. для ex / tmp / 1 / tmp / 2 / tmpnew я хочу перебрать аргумент, кроме последнего, и каждый раз копировать файл в путь к последнему аргументу.

У меня проблема с echo '$ {files [$ (($ len))]} 'внутри for. Я не могу выдвинуть последний аргумент, как это.

files=( "$@" )

len=${#files[@]}
echo $len
for (( i=0; i<$(( $len -1 )); i++ ))
    do
        echo ${files[$(($len))]}
        echo ${files[$i]}
    done

1 Ответ

0 голосов
/ 25 февраля 2020

Последний элемент - ${files[len-1]}, или просто ${files[-1]}.

Аналогично, вы можете использовать только ${files[i]}. Если массив не ассоциативный, bash интерпретирует индекс как арифметическое c выражение.

#!/bin/bash
files=("$@")

len=${#files[@]}
echo $len
for (( i=0; i<len-1; i++ )) ; do
    echo "${files[-1]}"
    echo "${files[i]}"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...