Как dj_segfault указывает, оболочка может сделать большинство из этого для вас. Похоже, вам придется отступить на что-то внешнее для нижней части колонны. Для этого у вас есть много вариантов, таких как perl one-liners above и т. Д., Но я думаю, что tr, вероятно, самый простой.
# first, strip underscores
CLEAN=${STRING//_/}
# next, replace spaces with underscores
CLEAN=${CLEAN// /_}
# now, clean out anything that's not alphanumeric or an underscore
CLEAN=${CLEAN//[^a-zA-Z0-9_]/}
# finally, lowercase with TR
CLEAN=`echo -n $CLEAN | tr A-Z a-z`
Порядок здесь несколько важен. Мы хотим избавиться от подчеркивания, а также заменить пробелы символами подчеркивания, поэтому мы должны обязательно снять символы подчеркивания. В ожидании, чтобы передать вещи не тр до конца, мы знаем, что есть только буквенно-цифровые и подчеркивания, и мы можем быть уверены, что у нас нет места, поэтому мы не должны беспокоиться о специальных символов интерпретируется оболочкой.
если вы установите `STRING = $ (гт/TMP/*)`, если эхо $ STRING перед очисткой, он будет выполнять подоболочку и удалить/TMP/содержание ... так что вам нужно дезинфицировать его ПЕРЕД любой эхо делается – higuita 2016-05-04 16:29:12