Как центрировать изображение на странице с помощью lp?

Кажется, вы хотите удалить все, что находится после первой точки в именах, доступных в текущем каталоге.

Чтобы перебрать все имена в текущем каталоге, используйте

for name in *; do...; done

Использование вывода lsдля чего-либо, кроме визуального контроля, чревато ошибками, и его следует избегать. См. Почему *не *parse `ls`(и что делать вместо )?

Чтобы удалить бит после первой точки в $name(, включая саму точку ), используйте ${name%%.*}. Это расширение стандартного параметра , которое удаляет самый длинный суффикс, соответствующий шаблону подстановки .*, из значения переменной name.

Чтобы вывести результат этого расширения, вы можете использовать

printf '%s\n' "${name%%.*}"

См. оба Когда необходимо двойное -цитирование? и Почему printf лучше, чем echo? .

Ваш полный сценарий может быть написан

#!/bin/sh

for name in *; do
    printf '%s\n' "${name%%.*}"
done

Ваш второй вопрос, о том, что ${i}называется :Это расширение переменной (иногда используются термины "расширение параметра" или "подстановка переменной/параметра" ). ${i}будет расширено/заменено значением переменной i. Это также можно было бы написать $i, так как фигурные скобки здесь ничего особенного не делают. Единственное место, где вы можете захотеть использовать ${i}вместо $i, — это когда расширение является частью строки, а самый следующий символ допустим в имени переменной, как в"${i}_stuff"($i_stuffпопытается расширить переменную i_stuff).

0
12.08.2021, 02:44
0 ответов

Теги

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