有时,在系统上不可能有 bash 的奢侈,但是与 sh 或 ash 相比,在 bash 上更容易创建条件,应该验证什么以确保条件不会在重写时与典型的“意外操作符”中断bash 到 sh 还是 ash ?
我if
在脚本中有一个声明。
它看起来像这样:
if [ "$a" != "0" -a "$b" != "100" ]; then
#some commands here
Run Code Online (Sandbox Code Playgroud)
如果我没记错的话,如果两个条件都为真,上面的行就会起作用。
现在,我怎么能测试无论是执行之前的一个或两个条件为真some commands
?
假设我以 root 身份连接到 Linux 系统。
当我输入时到底发生了什么unset *
?
用于检查某个范围内的单个数字的正则表达式模式是什么?我正在尝试以下模式,该模式在测试时似乎有效
https://regex101.com/
。
模式:\b([0-5])\b
预期结果:
输入:2 输出:好的
输入:5 输出:好的
输入:6 输出:无
输入:22 输出:无
test$ ch=2
test$ [[ $ch =~ \b([0-5])\b ]] && echo "ok" || echo "no"
no
test$ ch=6
test$ [[ $ch =~ \b([0-5])\b ]] && echo "ok" || echo "no"
no
test$ ch=62
test$ [[ $ch =~ \b([0-5])\b ]] && echo "ok" || echo "no"
no
test$ ch=0
test$ [[ $ch =~ \b([0-5])\b ]] && echo "ok" || echo "no"
no
test$
Run Code Online (Sandbox Code Playgroud)
我也尝试过双回:
test$ ch=2
test$ [[ $ch …
Run Code Online (Sandbox Code Playgroud) 有人可以用一个例子告诉我每一行的含义是什么,我不明白为什么使用正则表达式,甚至 [!0122...]
#!/bin/sh
is_integer ()
{
case "${1#[+-]}" in
(*[!0123456789]*) return 1 ;;
('') return 1 ;;
(*) return 0 ;;
esac
}
Run Code Online (Sandbox Code Playgroud)