外部コマンドを実行してその出力を文字列として取得するには

Scala

import scala.sys.process._;

val ret = "pwd"!!;
# ret: String = "/home/foo/bar\n"

PHP

バッククオートの演算子が使える。

$format = '+%Y%m%d-%H%M%S';
echo `date $format`;

バッククオート演算子をダブルクオートで囲んだ文字列の中で使うことはできない。

実行演算子 | PHP Manual
http://www.php.net/manual/ja/language.operators.execution.php

Python

IPythonだと ! を使って以下のように書ける。標準出力を改行区切りで文字列のリストにしてくれる。

In[17]: files=!ls -a
In[18]: files
Out[18]: ['.',
          '..',
          'test.py',
          ...]

Ruby

pwd = `pwd`
print pwd

popen を使う方法

IO.popen('cat', 'r+') do |io|
  io.puts("abcdef");
  p io.gets
  # =>   "abcdef\n"
  io.puts("あいうえお");
  p io.gets
  # => "あいうえお\n"
end

Perl

my $pwd = `pwd`;
print $pwd;

文字列と同様に``の中に変数を埋め込むこともできる。

コマンドが最後に改行を出力していれば、得られる文字列の最後にも改行が付き、勝手にtrimされることはない。

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク