我保留了我的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]