我想根据另一个变量(在本例中为受试者编号)的模数分配一个变量,得到一个在 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/