Обработка строк и их назначение в Bash

Как я могу манипулировать строкой, а затем присвоить ее переменной?

Эта манипуляция со строками работает так, как я хочу:

echo ${dir:2:5} | sed 's/[.]$//';

, но:

var x = ${dir:2:5} | sed 's/[.]$//';

,

x = ${dir:2:5} | sed 's/[.]$//';

и

x = $(${dir:2:5} | sed 's/[.]$//');

все приводят к ошибкам, подобным:

script.sh: line 2: mystring: command not found
script.sh: line 2: x: command not found
script.sh: line 2: var: command not found

Я намерен использовать эту переменную в mv.

mv /var/$x/test/$x.mp4 /home/me/
-1
26.04.2019, 17:23
2 ответа

Попробуйте:

x=$(echo "${dir:2:5}" | sed 's/\.$//')
  1. Вы должны опускать пробелы при объявлении переменной(x=value)
  2. $dir— переменная. Чтобы распечатать вывод вашей команды, вы должны использовать echo "${dir:2:5}" | sed 's/\.$//'в терминале. Чтобы сохранить значение в переменной x, вы заменяете значение своей командой, используя подстановку команд$( )
1
28.01.2020, 05:08

Дополнение кответу Фредди ; вертикальную черту sedтакже можно заменить заменой строкиbash. Пример:

x=abcd.efghijk ; y="${x:2:5}" ; echo "$y"  "${y/.}"

Выход:

cd.ef cdef
1
28.01.2020, 05:08

Теги

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