asf*_*ows 15 ruby shell backticks
在Ruby中,我知道我可以用反引号执行shell命令,如下所示:
`ls -l | grep drw-`
Run Code Online (Sandbox Code Playgroud)
但是,我正在编写一个脚本,它需要一些相当长的shell命令,为了便于阅读,我希望能够将它分解为多行.我假设我不能像Strings一样加入加号,但我很好奇是否有一种命令级联技术可以将一个长命令字符串干净地分解为多行源代码.
Mar*_*mas 47
您可以使用以下命令来转义回车\
:
`ls -l \
| grep drw-`
Run Code Online (Sandbox Code Playgroud)
And*_*all 13
你可以使用插值:
`#{"ls -l" +
"| grep drw-"}`
Run Code Online (Sandbox Code Playgroud)
或者将命令放入变量并插入变量:
cmd = "ls -l" +
"| grep drw-"
`#{cmd}`
Run Code Online (Sandbox Code Playgroud)
根据您的需要,您也可以使用另一种运行shell命令的方法,例如system
,但请注意其行为与反引号不完全相同.
用途%x
:
%x( ls -l |
grep drw- )
Run Code Online (Sandbox Code Playgroud)
另一个:
%x(
echo a
echo b
echo c
)
# => "a\nb\nc\n"
Run Code Online (Sandbox Code Playgroud)