Mar*_*ter 12 shell dash string regular-expression
检查 $1 是否为 /bin/dash 整数的最佳方法是什么?
在 bash 中,我可以这样做:
[[ $1 =~ ^([0-9]+)$ ]]
Run Code Online (Sandbox Code Playgroud)
但这似乎不符合 POSIX 标准,而且 dash 不支持
Joh*_*024 12
以下检测整数,正数或负数,并在dash
POSIX下工作:
echo "$1" | grep -Eq '^[+-]?[0-9]+$' && echo "It's an integer"
Run Code Online (Sandbox Code Playgroud)
case "${1#[+-]}" in
''|*[!0-9]*)
echo "Not an integer" ;;
*)
echo "Integer" ;;
esac
Run Code Online (Sandbox Code Playgroud)
或者,稍微使用一下:
(nop) 命令:
echo "$1" | grep -Eq '^[+-]?[0-9]+$' && echo "It's an integer"
Run Code Online (Sandbox Code Playgroud)
是否dash
,bash
,ksh
,zsh
,POSIX sh
,或posh
(“Bourne Shell的重新实现” sh
); 该case
构造是最广泛可用和最可靠的:
case $1 in (*[!0-9]*|"") false ;; (*) true ;; esac
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3079 次 |
最近记录: |