我已经知道如何放入h4 h7 h8 h9 h7
一个以空格作为定界符的数组,但是在那之后,我试图h
将数字与数字分开以将数字相互比较。
如何在bash脚本中拆分这些内容?
#!/bin/bash
arr=( h4 h7 h8 h9 h7 )
for thing in "${arr[@]}"; do
num=${thing#?}
printf 'The number in "%s" is %d\n' "$thing" "$num"
done
变量扩展从中${variable#pattern}
删除匹配的最短前缀字符串。模式匹配单个字符。pattern
$variable
?
输出将是
The number in "h4" is 4
The number in "h7" is 7
The number in "h8" is 8
The number in "h9" is 9
The number in "h7" is 7
或者,要忽略非数字前缀,不管它有多长,请使用sed
,
#!/bin/bash
arr=( hello4 happy7 hobbit8 hulk9 hr-department7 )
for thing in "${arr[@]}"; do
num=$( printf '%s\n' "$thing" | sed 's/^[^[:digit:]]*//' )
printf 'The number in "%s" is %d\n' "$thing" "$num"
done
或者,使用末尾数字的正则表达式匹配,
#!/bin/bash
arr=( hello4 happy7 hobbit8 hulk9 hr-department7 )
for thing in "${arr[@]}"; do
if [[ "$thing" =~ ([[:digit:]]+)$ ]]; then
printf 'The number in "%s" is %d\n' "$thing" "${BASH_REMATCH[1]}"
fi
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句