下面的代码有什么问题?
name='$filename | cut -f1 -d'.''
按原样,我得到了文字字符串$filename | cut -f1 -d'.'
,但是如果我去掉引号,我什么也得不到。同时,输入
"test.exe" | cut -f1 -d'.'
在shell中给出了我想要的输出,test
。我已经知道$filename
已经被分配了正确的值。我想要做的是将不带扩展名的文件名分配给一个变量。
发布于 2015-05-03 05:49:18
如果您知道扩展名,则可以使用basename
$ basename /home/jsmith/base.wiki .wiki
base
发布于 2015-09-15 19:31:43
如果您的文件名包含一个点(而不是扩展名的点),则使用以下命令:
echo $filename | rev | cut -f 2- -d '.' | rev
发布于 2016-04-26 21:13:35
file1=/tmp/main.one.two.sh
t=$(basename "$file1") # output is main.one.two.sh
name=$(echo "$file1" | sed -e 's/\.[^.]*$//') # output is /tmp/main.one.two
name=$(echo "$t" | sed -e 's/\.[^.]*$//') # output is main.one.two
你想用什么就用哪一个。在这里,我假设文本后面的最后一个.
(点)是扩展名。
https://stackoverflow.com/questions/12152626
复制相似问题