тот же переводчик не удалось на некоторых машинах

0

Я использую следующий код и не удалось.

$ echo $TERM
xtermc
$ v=/bin:/usr/bin:/usr/local/bin ; echo $v | tr ':' '\n'
/binn/usr/binn/usr/local/bin

Кажется, пропустить мой '/'. Я не знаю, как это решить. Моя оболочка это зш. Я перешел на bash, но все равно не получилось.

Но на другой машине это работает. и результат

/bin
/usr/bin
/usr/local/bin

Я нашел там три тр

/usr/local/bin/tr (GNU coreutils) 6.4
/usr/ucb/tr unkown version size 9916 bytes
/bin/tr size 19400 Usage: /bin/tr [ -cds ] [ String1 [ String2 ] ]
Даниэль YC Лин
источник
На обеих машинах установлен Solaris? Не могли бы вы опубликовать вывод which trи tr --versionна обеих машинах?
Деннис

Ответы:

1

Проблема вызвана различными настройками TR и PATH.

works: /usr/local/bin/tr (GNU coreutils) 6.4
failed: /usr/ucb/tr unkown version size 9916 bytes
works: /bin/tr size 19400 Usage: /bin/tr [ -cds ] [ String1 [ String2 ] ]
Даниэль YC Лин
источник
0

Поскольку вы используете zsh, вы можете использовать этот подход и больше не полагаться на какие-либо внешние команды:

$ v=/bin:/usr/bin:/usr/local/bin; print -l ${(s.:.)v}
/bin
/usr/bin
/usr/local/bin

Как это устроено:

  • флаг расширения параметра (s.:.)разделяет параметр $vна двоеточия (см. man zshexpn)
  • print -l печатает каждый следующий аргумент в одной строке

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

$ print ${v//:/\\n}

где //from/toглобальный (две начальные косые черты) поиск и замена.

МРУ
источник