На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random, Модераторы разделов
-
lgar
- Сообщения: 118
- ОС: Ubuntu
Сообщение
lgar »
Кроме column -t, есть другая возможность избежать лишнего пробела перед значением переменной?
То есть, чтобы сразу было $var='value', а не $var=' пробел value'
Код: Выделить всё
#set -x
file=$1
sort=$2
hosts=$(cat $file | grep $sort | cut -d'.' -f1)
for host in $hosts; do hostlist="$hostlist $host"; done
IFS=$'\t'
echo $hostlist | column -t
++ for host in '$hosts'
++ hostlist='пробелhost13'
-
SLEDopit
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Сообщение
SLEDopit »
так вы сами его туда ставите в строке:
если порядок не важен, то делайте так (тогда пробел будет в конце (: ):
ну или после того, как цикл закончился, убирайте пробел:
Код: Выделить всё
hostlist=${hostlist# } ## убирает с начала
hostlist=${hostlist% } ## убирает с конца
и, кстати, echo $hostlist (именно вариант без кавычек) пробел в начале проигнорирует.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
-
Rootlexx
- Бывший модератор
- Сообщения: 4463
- Статус: GNU generation
- ОС: Debian GNU/Linux
Сообщение
Rootlexx »
Код: Выделить всё
for host in $hosts; do
hostlist=${hostlist:+$hostlist }$host;
done
Но вообще-то непонятно, зачем городить такую конструкцию. Если вы хотите получить список узлов в одну строку через пробел, можно просто записать так:
Код: Выделить всё
hosts=$(cat $file | grep $sort | cut -d'.' -f1 | tr \\n \ )