Ruby系统回应奇怪的引用行为

时间:2018-06-09 16:48:31

标签: ruby windows bash

我保留了我的TIL日记,并且每天使用几个Ruby和bash脚本来创建文件,添加内容,创建别名,并将这些文件作为脚本运行。

更新:这只发生在Windows,此消息底部的更多信息。

upd01:感谢@glennjackman。他的尝试发现这种行为在其他系统上没有重复。

超级简洁的问题

BASH:

echo 'hi' # hi

红宝石:

system("echo 'hi'") # 'hi'

为什么Ruby添加引号?

简短问题:

BASH:

$ echo 'echo 20180609_Saturday/20180609.sh' > 20180609_Saturday/20180609.sh

20180609_Saturday / 20180609.sh:

echo 20180609_Saturday/20180609.sh

Ruby中的Bash:

system("echo 'echo #{file_path}' > #{file_path}")

20180609_Saturday / 20180609.sh:

'echo 20180609_Saturday/20180609.sh'

为什么Ruby的bash请求输出中会出现引号?

详细说明:

我的一个手动例程是在新创建的bash脚本中添加一行,以测试“当我调用它时它会被触发吗?”

$ echo 'echo 20180609_Saturday/20180609.sh' > 20180609_Saturday/20180609.sh

并且此命令创建将此行添加到 20180609_Saturday / 20180609.sh 文件。

echo 20180609_Saturday/20180609.sh

我决定在我的Ruby脚本中添加这一行

system("echo 'echo #{file_path}' > #{file_path}")

并在 20180609_Saturday / 20180609.sh 我有一行引号:

'echo 20180609_Saturday/20180609.sh'

系统和反引号的不同变体相同:

# Second variand
`echo 'echo #{file_path}' > #{file_path}"`
# Third variand
system("echo \"echo #{file_path}\" > #{file_path}")

我在新创建的文件中仍然有这些引号。为什么会这样?

UPD: 此行为取决于平台。

Windows 8.1

$ ruby -e "system(\"echo 'hi'\")" ;  ruby --version

输出

'hi'
ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]

Ubuntu 16.04:

$  ruby -e "system(\"echo 'hi'\")" ;  ruby --version

输出:

hi
ruby 2.3.1p112 (2016-04-26 revision 54768) [i686-linux]

0 个答案:

没有答案