Существует множество способов исправить вашу переменную, но сначала нам нужно знать, от чего избавляться (т. Е. Вывод someCommand
).
Если, например, всегда помещаются два символа впереди, которые вам не нужны, вы можете использовать:
x=$(someCommand | cut -c3-)
Если вы хотите удалить все символы с выхода за пределы диапазона от 0x20 до 0x7e (непечатаемые символы от ASCII
), вы можете использовать:
x=$(someCommand | tr -d '[\000-\037\177]')
В идеале вы должны запустить someCommand | od -xcb
, чтобы получить фактический шестнадцатеричный дамп того, что он выводит. Тогда мы можем помочь вам в дальнейшем.
Обновление:
Исходя из ваших новых данных (что вывод \n\nSomeName27-Oct-2009-14-33.sql.zip
), вы сможете использовать sed '/^$/d'
для удаления пустых строк.
pax> echo '
SomeName27-Oct-2009-14-33.sql.zip' | od -xcb
0000000 0a0a 6f53 656d 614e 656d 3732 4f2d 7463
\n \n S o m e N a m e 2 7 - O c t
012 012 123 157 155 145 116 141 155 145 062 067 055 117 143 164
0000020 322d 3030 2d39 3431 332d 2e33 7173 2e6c
- 2 0 0 9 - 1 4 - 3 3 . s q l .
055 062 060 060 071 055 061 064 055 063 063 056 163 161 154 056
0000040 697a 0a70
z i p \n
172 151 160 012
0000044
pax> echo '
SomeName27-Oct-2009-14-33.sql.zip' | sed '/^$/d' | od -xcb
0000000 6f53 656d 614e 656d 3732 4f2d 7463 322d
S o m e N a m e 2 7 - O c t - 2
123 157 155 145 116 141 155 145 062 067 055 117 143 164 055 062
0000020 3030 2d39 3431 332d 2e33 7173 2e6c 697a
0 0 9 - 1 4 - 3 3 . s q l . z i
060 060 071 055 061 064 055 063 063 056 163 161 154 056 172 151
0000040 0a70
p \n
160 012
0000042
Предполагается, что эти \n
маркеры на самом деле две строки ({'\n','\n'}
). Если (по какой-то причудливой причине) это четыре символов {'\\','n','\\','n'}
, вместо этого используйте cut -c5-
.