ошибки в раскрытии параметров в именах файлов с отрицательными числами

Эта информация устарела, и стек обычно больше не исполняется:

00007ffd884fa000    356K rw---   [ stack ]

GCC нужен исполняемый стек, если он генерирует трамплины для вызовов вложенных функций . Эти батуты представляют собой небольшие фрагменты кода, сгенерированные во время выполнения и хранящиеся в стеке, поэтому, если они используются, стек должен быть исполняемым. Компилятор отслеживает это требование и выводит флаг в двоичных файлах (библиотеках и исполняемых файлах), чтобы указать, нужен ли им исполняемый стек. Вы можете видеть значение этого флага и управлять им с помощью execstack (8) .

1
22.09.2017, 21:37
3 ответа

Слово, начинающееся с тире, обычно рассматривается как вариант. Когда вы делаете ls *, команда lsполучает ls 001.png -002.png...и видит -002.pngкак набор опций, которые она не понимает. То же самое для многих команд, таких как cp, mv,...

Решение #1 :добавьте к файлам префикс пути. Будет работать во всех случаях.

ls./*

Решение #2 :многие команды, особенно в мире GNU, принимают в качестве параметра двойное -тире, указывающее, что следующее не является параметром

ls -- *

Тем не менее, начальные дефисы не влияют на цикл for.


Что касается «значения, слишком большого для базы», ​​это связано с тем, что -008считается восьмеричным числом, поскольку оно начинается с 0. Однако 8 не является допустимой восьмеричной цифрой.Быстрым решением было бы использоватьbc:

printf -v basename_new %04d "$(bc <<< "${basename} + 10")"

Проблема с ifвызвана пустым basename_newи исчезнет с приведенным выше исправлением.

4
27.01.2020, 23:19

10#-008 не сделает -008десятичным. Я думаю, это потому, что 10#должно стоять перед цифрами, а не перед знаками.

-2
27.01.2020, 23:19

Сzsh:

$ autoload zmv
$ zmv -n '((-|)<->).(png|jpg)' '${(l:4::0:)$(($1 + 10))}.$3'
mv -- -002.jpg 0008.jpg
mv -- 0043.png 0053.png
mv -- 0044.png 0054.png
mv -- 0052.png 0062.png
mv -- -005.png 0005.png
mv -- -008.png 0002.png

(удалите -nчтобы сделать это ).

  • (-|)glob:-или "" :необязательный-
  • <->glob :любая последовательность десятичных цифр (подобная <x-y>но без ограничений ).
  • ${(l:4::0:)param}:заполнение слева (и усечение )длины 4 нулями.
  • $(($1 + 10)):данные, захваченные первой парой (...)в шаблоне, увеличенные на 10 (zsh, не имеют той проблемы, что числа с ведущими 0 обрабатываются как восьмеричные; даже если вы установите параметр octalzeroes, это не повлияет на zmv, который возвращается к нормальным параметрам zsh во время работы.
2
27.01.2020, 23:19

Теги

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