Циклическая функция с аргументами в другой циклической функции с аргументами

С помощьюнайдитекоманду:

find. -type f -name "*.txt" ! -name "fgh.txt"
  • -name "*.txt"-найти файлы с именами, соответствующими шаблону (все текстовые файлы)

  • ! -name "fgh.txt"-кроме точного имени файлаfgh.txt


Если ваши файлы действительно имеют префикс чисел (Я не уверен в редактировании этого вопроса )измените условие отрицания на! -name "*fgh.txt"

1
05.09.2019, 17:45
1 ответ

Поскольку переменные являются "глобальными" в сценариях оболочки -, если вы не объявите их локальными. Таким образом, если одна функция изменит вашу переменную i, другая функция увидит эти изменения и будет вести себя соответствующим образом.

Таким образом, для переменных, используемых в функциях --особенно циклических -переменных, таких как i, j, x, y --, объявление их как локальных является обязательным. См. ниже...

#!/bin/bash
# Print $1 $2 times
function foo() {
  local i
  for (( i=0; i<"$2"; i++ )); do
    echo -n $1
  done
  echo
}

# Print $1 $2x$3 times
function bar() {
  local i
  for (( i=0; i<"$3"; i++ )); do
    foo "$1" "$2"
  done
}

bar "$1" "$2" "$3"

Результат:

$./foobar.sh a 3 3
aaa
aaa
aaa
$./foobar.sh 'a b ' 4 3
a ba ba ba b
a ba ba ba b
a ba ba ba b

5
27.01.2020, 23:15

Теги

Похожие вопросы