外部コマンドを実行してその出力を文字列として取得するには
Scala 2014/10/08
import scala.sys.process._;
val ret = "pwd"!!;
# ret: String = "/home/foo/bar\n"
PHP 2014/04/14
バッククオートの演算子が使える。
$format = '+%Y%m%d-%H%M%S';
echo `date $format`;
バッククオート演算子をダブルクオートで囲んだ文字列の中で使うことはできない。
実行演算子 | PHP Manual
http://www.php.net/manual/ja/language.operators.execution.php
Python 2014/09/07
IPythonだと !
を使って以下のように書ける。標準出力を改行区切りで文字列のリストにしてくれる。
In[17]: files=!ls -a
In[18]: files
Out[18]: ['.',
'..',
'test.py',
...]
Ruby 2015/03/23
pwd = `pwd`
print pwd
- 標準入力は渡せない
- 標準出力は文字列で取得
- 標準エラー出力は取得できない
- 終了ステータスは
$?.exitstatus
で取得できる - バッククオートの中身はダブルクオーテーションで囲まれた文字列と同様に エスケープ処理や式展開が有効
popen
を使う方法
2014/02/23
例
IO.popen('cat', 'r+') do |io|
io.puts("abcdef");
p io.gets
# => "abcdef\n"
io.puts("あいうえお");
p io.gets
# => "あいうえお\n"
end
Perl 2015/08/25
my $pwd = `pwd`;
print $pwd;
文字列と同様に``
の中に変数を埋め込むこともできる。
コマンドが最後に改行を出力していれば、得られる文字列の最後にも改行が付き、勝手にtrimされることはない。