天天看点

linux mac转字符串,为什么在Mac vs Linux上通过`R -e ..`的字符串命令需要额外的转义?...

这个让我难过。我执行了一个简单的Shell脚本,该脚本可以在我的Linux(AWS aka CentOS)计算机上正常运行,但是在我的Mac OS X计算机上崩溃。原来\,字符串命令中的转义()需要一个额外的转义字符(\\)。

有人可以启发我了解我在这里缺少的内容吗,即,在需要此功能的Mac上运行R脚本又有什么用呢?

打电话说时,*未*观察到该行为python3 -c ..

在两台机器上,我正在使用bash,特别是/bin/bash

注意:Mac是R:3.5.1 vs 3.4.1的稍晚版本,但是如果这是罪魁祸首,我将感到非常惊讶。有人可以确认吗?

简单的例子:

R --vanilla -e 'cat(" Hello \n World \n ")'

上面的代码在CentOS机器上可以很好地运行,但是需要附加的转义符(\\n而不是\n)才能正确执行。(底部示例)

为了进行参考/比较,以下python命令在我测试过的每台Mac OS X,CentOS计算机上均可以相同地工作。

python3 -c 'print("Hello \n World")'

有关详细信息,这是比较两台计算机上的两个命令的输出

1. R --vanilla -e 'cat(" Hello \n World \n ")'

2. R --vanilla -e 'cat(" Hello \\n World \\n ")'

1。

R --vanilla -e 'cat(" Hello \n World \n ")'

## CENTOS:

> cat(" Hello \n World \n ")

Hello

World

## MAC OS X:

> cat(" Hello

+

+ Error: unexpected end of input

Execution halted

2。

R --vanilla -e 'cat(" Hello \\n World \\n ")'

## CENTOS:

> cat(" Hello \\n World \\n ")

Hello \n World \n >

## MAC OS X:

> cat(" Hello \n World \n ")

Hello

World

为了进行比较,在运行简单的python脚本时没有看到相同的行为。

## Each of these produce identical

## results in Mac OSX as CentOS

python3 -c 'print("Hello \n World")'

python3 -c 'print("Hello \\n World")'

机器和会话信息:

Linux盒子

> cat /etc/os-release

NAME="Amazon Linux AMI"

VERSION="2018.03"

ID="amzn"

ID_LIKE="rhel fedora"

VERSION_ID="2018.03"

PRETTY_NAME="Amazon Linux AMI 2018.03"

ANSI_COLOR="0;33"

CPE_NAME="cpe:/o:amazon:linux:2018.03:ga"

HOME_URL="http://aws.amazon.com/amazon-linux-ami/"

> R --vanilla -e 'sessionInfo()'

R version 3.4.1 (2017-06-30)

Platform: x86_64-redhat-linux-gnu (64-bit)

Running under: Amazon Linux AMI 2018.03

Matrix products: default

BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so

locale:

[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C

[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8

[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8

[7] LC_PAPER=en_US.UTF-8 LC_NAME=C

[9] LC_ADDRESS=C LC_TELEPHONE=C

[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:

[1] stats graphics grDevices utils datasets methods base

loaded via a namespace (and not attached):

[1] compiler_3.4.1

Mac OS盒子

Mojave 10.14.3

> R --vanilla -e 'sessionInfo()'

R version 3.5.1 (2018-07-02)

Platform: x86_64-apple-darwin15.6.0 (64-bit)

Running under: macOS 10.14.3

Matrix products: default

BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib

LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib

locale:

[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:

[1] stats graphics grDevices utils datasets methods base

loaded via a namespace (and not attached):

[1] compiler_3.5.1

另一台运行3.4.3的Mac OSX计算机,出现相同错误

> sessionInfo()

R version 3.4.3 (2017-11-30)

Platform: x86_64-apple-darwin15.6.0 (64-bit)

Running under: macOS High Sierra 10.13.6