Bash 如何在shell脚本中获取文件名的第一个扩展名?
是否有内联命令可用于获取文件的第一个扩展名 我使用以下命令获取最新版本:Bash 如何在shell脚本中获取文件名的第一个扩展名?,bash,shell,sh,cut,Bash,Shell,Sh,Cut,是否有内联命令可用于获取文件的第一个扩展名 我使用以下命令获取最新版本: FILE="filename.tar.bz2" EXT="${FILE##*.}" echo "EXT = ${EXT}" 返回 EXT = bz2 是否有类似的命令仅用于隔离tar var="config/filename.tar.bz2" ext=$(basename "$var") # extract filename only ext=${ext#*.} # remove ever
FILE="filename.tar.bz2"
EXT="${FILE##*.}"
echo "EXT = ${EXT}"
返回
EXT = bz2
是否有类似的命令仅用于隔离tar
var="config/filename.tar.bz2"
ext=$(basename "$var") # extract filename only
ext=${ext#*.} # remove everything in front the first dot
ext=${ext%%.*} # remove everything after a dot
echo "$ext"
注意:按惯例,大写变量用于导出的变量,如列、行UID PWD TERM等。在脚本中首选小写变量
$ filename="filename.tar.bz2"
$ echo ${filename##*.}
ext
$ file_ext=${filename##*.} #put to variable
$ echo ${file_ext}
ext
注意:按惯例,大写变量用于导出的变量,如列、行UID PWD TERM等。在脚本中首选小写变量
$ filename="filename.tar.bz2"
$ echo ${filename##*.}
ext
$ file_ext=${filename##*.} #put to variable
$ echo ${file_ext}
ext
这将在句点之间输出字符串的第一个实例。在这种情况下,“焦油”
这将在句点之间输出字符串的第一个实例。在本例中,“tar.”仅使用POSIX外壳程序语法,不使用外部命令子外壳程序调用,根据来自的正确答案展开: !/副秘书长/垃圾箱/环境卫生 filepath=/path/to/config/filename.tar.bz2.bak echo“filepath:”$filepath 移除所有物品,包括最后一个/ filename=${filepath*/} echo“filename:”$filename 移除所有部件,直到并包括第一个圆点 所有扩展名=${filename*} 回显'all_extensions:'$all_extensions 删除所有内容,包括第一个点 第一个_扩展=${all_扩展%%.*} 回显“第一个扩展名:”$First_扩展名 last_extension=${all_extensions*} 回显“最后一个扩展名:”$Last_扩展名 用扩展名填充参数数组 如果s=';集合-$all_扩展 如果[$-gt 0] 然后 ext_num=1 printf'\n正在运行所有%d个扩展:\n'$ printf“%s\t%s\n”外部扩展名 延期 做 printf“%4d\t%s\n”$ext\u num$扩展名 ext_num=$ext_num+1 完成 fi 输出: filepath:/path/to/config/filename.tar.bz2.bak 文件名:filename.tar.bz2.bak 所有扩展名:tar.bz2.bak 第一个扩展:tar 最后分机:bak 迭代所有3个扩展: 分机 1焦油 2 bz2 3贝克
根据来自的正确答案展开,仅使用POSIX shell语法,不使用外部命令子shell调用: !/副秘书长/垃圾箱/环境卫生 filepath=/path/to/config/filename.tar.bz2.bak echo“filepath:”$filepath 移除所有物品,包括最后一个/ filename=${filepath*/} echo“filename:”$filename 移除所有部件,直到并包括第一个圆点 所有扩展名=${filename*} 回显'all_extensions:'$all_extensions 删除所有内容,包括第一个点 第一个_扩展=${all_扩展%%.*} 回显“第一个扩展名:”$First_扩展名 last_extension=${all_extensions*} 回显“最后一个扩展名:”$Last_扩展名 用扩展名填充参数数组 如果s=';集合-$all_扩展 如果[$-gt 0] 然后 ext_num=1 printf'\n正在运行所有%d个扩展:\n'$ printf“%s\t%s\n”外部扩展名 延期 做 printf“%4d\t%s\n”$ext\u num$扩展名 ext_num=$ext_num+1 完成 fi 输出: filepath:/path/to/config/filename.tar.bz2.bak 文件名:filename.tar.bz2.bak 所有扩展名:tar.bz2.bak 第一个扩展:tar 最后分机:bak 迭代所有3个扩展: 分机 1焦油 2 bz2 3贝克
basename在你的代码中做了什么?@KamilCuk你是对的,那部分可以删除编辑basename在你的代码中做了什么?@KamilCuk你是对的,那部分可以删除编辑编辑像我一样返回bz2,但不像预期的那样返回tar编辑像我一样返回bz2,但是没有预期的那样,你能看看这个问题吗https://stackoverflow.com/questions/62292634/generate-where-clause-in-bash-using-variablesSo 我确实看了一眼,是吗?你是不是想宣传你的问题?请不要那样做你能看看这个问题吗https://stackoverflow.com/questions/62292634/generate-where-clause-in-bash-using-variablesSo 我确实看了一眼,是吗?你是不是想宣传你的问题?请不要那样做。。