我正在做一个bash脚本,它可以自动为我运行模拟。为了开始模拟,这个其他脚本需要一个输入,这应该由文件夹的名称决定。
所以,如果我有一个文件夹名称No200,那么我想提取数字200.到目前为止,我所拥有的是
PedsDirs=`find . -type d -maxdepth 1`
for dir in $PedsDirs
do
if [ $dir != "." ]; then
NoOfPeds = "Number appearing in the name dir"
fi
done
答案 0 :(得分:2)
$ dir="No200"
$ echo "${dir#No}"
200
一般情况下,要删除前缀,请使用${variable-name#prefix}
;删除后缀:${variable-name%suffix}
。
额外提示:避免使用find
。它引入了许多问题,尤其是当您的文件/目录包含空格时。请改用bash内置的glob功能:
for dir in No*/ # Loops over all directories starting with 'No'.
do
dir="${dir%/}" # Removes the trailing slash from the directory name.
NoOfPeds="${dir#No}" # Removes the 'No' prefix.
done
另外,请尝试始终在变量名称周围使用引号以避免意外扩展(即使用"$dir"
而不是$dir
)。
答案 1 :(得分:0)
要小心,因为你必须将=
加入bash中的变量名。要获得 号码,您可以执行以下操作:
NoOfPeds=`echo $dir | tr -d -c 0-9`
(即删除任何不是数字的字符)。所有数字都将在NoOfPeds
。