我有一个变量var在Bash脚本中持有一个字符串:

echo $var
"some string.rtf"

我想删除这个字符串的最后四个字符,并将结果分配给一个新变量var2,以便

echo $var2
"some string"

我该怎么做呢?


当前回答

你可以用sed,

sed 's/.\{4\}$//' <<< "$var"

例子:

$ var="some string.rtf"
$ var1=$(sed 's/.\{4\}$//' <<< "$var")
$ echo $var1
some string

其他回答

这也可以做到:

... | head -c -1
-c, --bytes=[-]NUM
              print the first NUM bytes of each file; with the leading '-', print all but the last NUM bytes of each file

要从字符串末尾删除四个字符,请使用${var%????}。

去掉所有的东西,包括最后的。使用$ {var %。*}。

更多信息请参见Bash的参数展开文档。

我尝试了以下方法,对我很有效:

#! /bin/bash

var="hello.c"
length=${#var}
endindex=$(expr $length - 4)
echo ${var:0:$endindex}

输出:冥界

上面的答案不适合我,因为mac os x附带了不同版本的bash。

我像这样使用sed:

var2=`echo $var2 | sed 's/.$//'`

删除最后一个字符

var2=`echo $var2 | sed 's/..$//'`

删除最后2个字符。

你可以用sed,

sed 's/.\{4\}$//' <<< "$var"

例子:

$ var="some string.rtf"
$ var1=$(sed 's/.\{4\}$//' <<< "$var")
$ echo $var1
some string