Bash 字符串操作和赋值

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

补充弗雷迪的回答;该sed管道也可以更换为bash字符串替换。例子:

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

输出:

cd.ef cdef

答案2

尝试:

x=$(echo "${dir:2:5}" | sed 's/\.$//')
  1. 声明变量时必须省略空格 ( x=value)
  2. $dir是一个变量。要打印命令的输出,您可以echo "${dir:2:5}" | sed 's/\.$//'在终端中使用。要将值保存在变量中x,请使用命令替换将值替换为命令$( )

相关内容