コマンドの一部に他のコマンドを埋め込んでバッククォート(`)で囲っておくと、その部分のコマンドが実行された結果が、その部分に置き換えられて残りのコマンドが実行される。
この機能は、コマンドの標準出力を変数に代入したり、他のコマンドの一部として再利用したい時に用いられる。
なお、これと良く似た機能がMELにも存在する。
% pwd /amt/home0/ad000000/unix % set dir = `pwd` ← pwdの結果(/amt/home0/ad000000/unix)をシェル変数dirに代入 % echo $dir /amt/home0/ad000000/unix % ls test1.c test2.c % set files = `ls` ← 出力結果にスペースが含まれている時は配列になる % echo $files test1.c test2.c % echo $files[1] test1.c % echo $files[2] test2.c
% whoami ← 自分のログイン名を表示するコマンド ad000000 % set prompt = `whoami` ← set prompt = ad000000 と同じ ad000000 ls ← プロンプトがad000000に変わる test1.c test2.c ad000000 source ~/.cshrc ← 元のプロンプトに戻す %~/.cshrcの中の
set prompt = ...
の部分がプロンプトの設定になっている。
% grep -l getAttr *.mel ← MELスクリプトでgetAttrが含まれているファイル名を表示 deleteObjects1.mel deleteObjects2.mel % vi `grep -l getAttr *.mel` ← vi deleteObjects1.mel deleteObjects2.melと同じ
シェルで変数を使った数値計算をするためには、整数と実数で以下の方法を使い分ける。
% @ x = 3 + 2 ← xには$がつかないことに注意 % echo $x 5 % @ y = $x * 4 ← 計算式の中のxには$がつく % echo $y 20 % @ z = ( $x + $y ) / 3 % echo $z 8 ← 整数計算なので小数点以下は切捨て(本当は8.333...) % @ z ++ % echo $z 9
% bc -l ← bcコマンドの基本的な使用方法 2.5 + 1.3 ← キーボード(標準入力)から計算式を入力する 3.8 ← 答えが標準出力へ出力される quit ← quitでbcコマンド終り % echo "3.5 * 2.3" | bc -l ← echoコマンドでパイプを通して計算式を入力する 8.05 % set x = `echo "3.5 * 2.3" | bc -l` ← 上のコマンドの出力をコマンド置換で変数xに代入する % echo $x 8.05