bash - 在 bash 中使用 OR

标签 bash conditional-statements modulo brackets mod

我想根据另一个变量(在本例中为受试者编号)的模数分配一个变量,得到一个在 N 个条件下循环的数字(代表受试者条件)。

换句话说,我想要一些与模块化函数 a%n 非常相似的东西,但是对于 n 的完整倍数,我想返回 n,而不是 0

我认为最简单的方法是使用 or 条件,这样如果 mod 函数返回 0,则返回 N,但我无法使用语法。

subj=4
list=$((subj%4)) || 4
echo $list

只返回subj%4的结果,忽略条件,用-o替换||失败。

如果我尝试在整个事物周围使用方括号,我只会得到条件测试的二进制输出。

我错过了什么?

最佳答案

是的,你的想法是对的,你只需将 block 放入用于运行 C 风格算术运算的构造中,即使用 Arithmetic expressions运算符(operator)

((list = n%4==0 ? 4 : 0 ))

按照 OP 的要求分别使用变量和函数

modulo() {
    local n="${1?Needs an argument}"
    echo $((n%4==0 ? 4 : 0 ))
}

根据需要修改此函数以返回自定义值。


modulo 5
0    
modulo 4
4    
modulo 8
4
modulo
bash: 1: Needs an argument

关于bash - 在 bash 中使用 OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48498611/

相关文章:

linux - 如何在 bash 命令行上使用 awk 的输出

linux - 使用 awk 编辑文件中的字段

git - 设置路径变量

java - 模运算符在 Java 中给出意外的输出

java - 如何将 TableView (JavaFX 11) 分成 n 个部分以另存为 png

bash - shell unix 中的 Concat 变量(日期)和字符串 - bash

c++ - 如何写短这个 "or"语句是不是?

java - 多个条件 else/if 语句有些错误?

python - 带有选择选项的条件 argparse

python - Python中模运算符的时间复杂度