小编典典

如何在 shell 脚本中删除文件名的扩展名?

all

以下代码有什么问题?

name='$filename | cut -f1 -d'.''

照原样,我得到了文字 string $filename | cut -f1 -d'.',但是如果我删除引号,我什么也得不到。同时,键入

"test.exe" | cut -f1 -d'.'

在 shell 中给了我想要的输出,test. 我已经知道$filename已经分配了正确的值。我想要做的是将不带扩展名的文件名分配给变量。


阅读 65

收藏
2022-06-11

共1个答案

小编典典

当您想在脚本/命令中执行命令时,您应该使用命令替换语法。$(command)

所以你的线是

name=$(echo "$filename" | cut -f 1 -d '.')

代码说明:

  1. echo获取变量的值$filename并将其发送到标准输出
  2. 然后我们获取输出并将其传递给cut命令
  3. cut使用 . 作为分隔符(也称为分隔符),用于将字符串切割成段,并通过-f我们选择要在输出中包含的段
  4. 然后$()命令替换将获取输出并返回其值
  5. 返回的值将分配给名为的变量name

请注意,这给出了变量的部分直到第一个时期.

$ filename=hello.world
$ echo "$filename" | cut -f 1 -d '.'
hello
$ filename=hello.hello.hello
$ echo "$filename" | cut -f 1 -d '.'
hello
$ filename=hello
$ echo "$filename" | cut -f 1 -d '.'
hello
2022-06-11