Paypal не работает для подписки - PayPal Работает на основе подписки Braintree и Woocommerce

Существует общий шаблон, в котором у вас есть пары файлов, где одно имя пары может быть легко получено из другого. Если файл, которому вы знаете, является X, а другой - Y, у вас есть следующие общие случаи использования.

  • Для переименования Y - это X с удаленным добавлением и / или датой штамп добавлен.
  • Для транскодирования Y является X с другим расширением и, возможно, другим каталогом.
  • Для многих задач анализа данных X и Y используют некоторые части имени файла, но имеют разные параметры или расширения.

Все они относятся к одному и тому же скелету с коротким кодом.

for x in path/to/base*.ext; do
    dir=${x%/*}   # Trim trailing file name, keep dir
    base=${x##*/} # Trim any leading directory

    # In this case, $y has a different subdirectory and a different extension
    y=${dir%/to}/from/${base%.ext}.newext

    # Maybe check if y exists?  Or doesn't exist?
    if [ -e "$y" ]; then
        echo "$0: $y already exists -- skipping" >&2
        continue
    fi

    mv or ffmpeg or awk or whatever "$x" and "$y"
done

Ключевым моментом здесь является наблюдение, что y может быть получен из x с некоторыми простыми заменами переменных. Итак, вы перебираете значения x и вычисляете соответствующее значение y внутри цикла.

Здесь мы использовали встроенные операторы ${variable#prefix} и ${variable%suffix} оболочки для возврата значение переменной с любым ведущим prefix или конечным suffix, соответственно, обрезано. (Существует также ## и %%, чтобы соответствовать самому длинному, а не кратчайшему возможному совпадению. Выражение после # или % является обычным шаблоном шаблона оболочки.) Обычно это должно быть все, что вам нужно, хотя вы часто видите скрипты sed или awk даже для этого тривиального задания (где на самом деле вы обычно должны стараться избегать внешнего процесса), а также, конечно, для более требовательных преобразований.

Если вы нужно зацикливать файлы x, разбросанные по разным каталогам, возможно, цикл должен начинаться с чего-то вроде

 find dir1 dir2 etc/and/so/forth -type f -name 'x-files*.ext' -print |
 while IFS='' read -r x; do
     :

Обычно встречающаяся проблема в подобных вопросах - это ответы, которые не приводят цитаты $x и $y правильно. Как правило, любая переменная, содержащая имя файла, всегда должна быть в двойных кавычках.

Если X и Y не связаны друг с другом, общим решением является цикл над документом, содержащим это отображение:

while read -r x y; do
    : stuff with "$x" and "$y"
done <<'____HERE'
    first_x_value  first_y_value
    another_x      corresponding_y
    random         surprise
____HERE
0
задан Komal 13 July 2018 в 17:51
поделиться