【发布时间】:2018-02-02 22:08:36
【问题描述】:
我想知道如何打印我拥有的字符串,但在 bash 中没有最后两个字符。 例如:
str = "hello.c"
然后只打印hello
感谢您的回答。
【问题讨论】:
-
你的意思是除了最后两个,还是除了扩展名?如果是
hello.cpp,你要hello还是hello.c? -
链接副本中明确涵盖了这两种情况。
我想知道如何打印我拥有的字符串,但在 bash 中没有最后两个字符。 例如:
str = "hello.c"
然后只打印hello
感谢您的回答。
【问题讨论】:
hello.cpp,你要hello还是hello.c?
答案是使用bash-builtin string manipulation:
str="hello.c"
echo "${str%.c}"
${parameter%word}${parameter%%word}单词被扩展以产生一个模式,就像在文件名中一样 扩张。如果模式匹配扩展的尾随部分 参数的值,那么展开的结果就是 参数 具有最短匹配模式('
%' 情况)或 最长匹配模式(“%%”案例)已删除。如果 参数 是 '@' 或'*',模式移除操作应用于每个位置 依次参数,展开是结果列表。如果 parameter 是下标为“@”或“*”的数组变量,即 模式移除操作应用于数组中的每个成员 转,展开就是结果列表。
【讨论】:
echo "${str%.c}"。否则,如果IFS=l,您将打印he o 作为输出;或者,使用默认的 IFS,如果字符串有一个文字制表符,您可以将其更改为空格(空格包围的 glob 将替换为当前目录中的名称列表等)。