我一直试图在开始和结束时截断文件名。
我可以使用以下代码实现此目的:
#!bin/bash
FILENAME="hello123.txt"
NAME=${FILENAME%.t*}
NUMBER=${NAME:5}
DOESNTWORK=${${FILENAME%.t*}:5}
echo "$FILENAME"
echo "$NAME"
echo "$NUMBER"
echo "$DOESNTWORK"
我的问题在于 DOESNTWORK 行 我收到此错误: main.sh:第7行:$ {“$ {FILENAME%。t *}”:5}:错误替换
有人可以指出错误吗?
谢谢,
答案 0 :(得分:0)
如果你可以使用GNU grep,为什么不在下面使用:
DOESNTWORK=$(grep -o -E '[[:digit:]]+' <<< "$FILENAME")
或者使用sed:
DOESNTWORK=$(sed 's/[^0-9]*//g' <<< "$FILENAME")
答案 1 :(得分:0)
至少有两种方法可以在bash
中完成此任务,至少对于您特别引用的示例。第一个删除所有不是数字的字符:
echo "${FILENAME//[^0-9]/}"
第二种方法是请求您已经部分使用的特定子字符串:
echo "${FILENAME:5:3}"
如果这些对您最有用,取决于您的实际用例与您引用的示例的比较...