如何在shell脚本中grep至少包含一个数字的参数?
示例(无限制参数数!):
./test.sh Hello W0rld1
它应该输出:
W0rld1
对于我的脚本,我已经这样做了:
searchErrorNumber=$(echo "${@}" | grep -o '[0-9]*')
对于相同的示例,它输出只是数字:
ERROR : 0 1 is not valid.
它应该输出如下的单词:
ERROR : W0rld1 is not valid.
谢谢你的帮助!
在bash中,您可以使用数组来保存选定的参数。使用[[ ... == ... ]]
和参数匹配来查找数字。
#! /bin/bash
contain_digit=()
for arg ; do
shift
if [[ "$arg" == *[0-9]* ]] ; then
contain_digit+=("$arg")
fi
done
printf '%s ' "${contain_digit[@]}"
echo
如果你想用grep
的方式,使用printf
在单独的行上输出每个参数(对于多行参数不起作用)。
printf '%sn' "$@" | grep '[0-9]'