Как я могу манипулировать строкой, а затем присвоить ее переменной?
Эта манипуляция со строками работает так, как я хочу:
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/
Попробуйте:
x=$(echo "${dir:2:5}" | sed 's/\.$//')
x=value
)$dir
— переменная. Чтобы распечатать вывод вашей команды, вы должны использовать echo "${dir:2:5}" | sed 's/\.$//'
в терминале. Чтобы сохранить значение в переменной x
, вы заменяете значение своей командой, используя подстановку команд$( )
Дополнение кответу Фредди ; вертикальную черту sed
также можно заменить заменой строкиbash
. Пример:
x=abcd.efghijk ; y="${x:2:5}" ; echo "$y" "${y/.}"
Выход:
cd.ef cdef