数学与嵌套的双parens,使用CentOS上的bash而不是Ubuntu

时间:2016-06-22 01:28:11

标签: bash

#!/bin/bash                                                                                              
num=1
(( ((num % 2)) == 0 ))

我可以从centos机器运行这个脚本,但我无法在我的ubuntu 16.04上运行它。

对于后者,会发生以下情况:

Syntax error: word unexpected (expecting ")")

出了什么问题?

2 个答案:

答案 0 :(得分:2)

使用短划线(Ubuntu用作fid = fopen('filename', 'r'); characters = fread(fid, '*char'); fclose(fid); % Determine whether each character in the input was a digit between 0 and 9 isDigit = ismember(characters, '0':'9'); % Count the total number of characters that were digits nDigits = sum(isDigit); )代替bash运行代码时,会出现此语法错误。

/bin/sh

vs,在bash,正确的操作:

$ dash -c 'num=1; (( ((num % 2)) == 0 )); echo $?'
dash: 1: Syntax error: word unexpected (expecting ")")

请确保您将脚本作为$ bash -c 'num=1; (( ((num % 2)) == 0 )); echo $?' 1 (符合./yourscript行)或#!/bin/bash(明确使用bash)而非bash yourscript运行(保证只运行符合POSIX的shell解释器,而不是使用bash扩展)。

答案 1 :(得分:0)

只需将其更改为

即可
if (( num % 2 == 0 ))