コマンドの一部に他のコマンドを埋め込んでバッククォート(`)で囲っておくと、その部分のコマンドが実行された結果が、その部分に置き換えられて残りのコマンドが実行される。
この機能は、コマンドの標準出力を変数に代入したり、他のコマンドの一部として再利用したい時に用いられる。
# pwd /CG/CGtec/abe # set dir = `pwd` # echo $dir /CG/CGtec/abe # 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 <- 自分のログイン名を表示 au980000 # set prompt = `whoami` <- set prompt = au980000 と同じ au980000 <- プロンプトがau980000に変わる
# grep -l scanf *.c <- scanfが含まれているファイル名を表示 test1.c kadai2.c # vi `grep -l scanf *.c` <- vi test1.c kadai2.c と同じ( vi `!!` と実行しても良い )
キーボード(標準入力)からシェルの変数へ値を入力するためには
$<
という記号を使用する。
# set x = $< <- 変数xにキーボードから入力する 123 <- 123(Enter)で変数xに代入される # echo $x 123 # set y = ( $< $< ) <- 配列yに2つの値を代入する aaa <- 配列yの1番目の値を代入する bbb <- 配列yの2番目の値を代入する # echo $y[1] aaa # echo $y[2] bbb
$<
を使用する。