C系シェルを使っていて困ったことなど。
ハマったら書くスタイルで随時更新。
環境変数の設定
setenv VARNAME VALUE
スクリプトでの引数
記法 | 意味 |
---|---|
$0 |
プログラム名 |
$1,$2, ... $9 |
引数1, 引数2, ... 引数9 |
$* |
引数全てを展開 |
$#argv |
引数の数 |
$argv[n] |
引数nを展開 |
$argv[1-n] |
引数1〜nまで展開 |
$argv[$#argv] |
末尾の引数 |
エイリアスでの引数
記法 | 意味 |
---|---|
'\!:1','\!:2',... |
引数1, 引数2, ... |
'\!*' |
全引数展開 |
シングルクォーテーションで囲んでおくが無難
リダイレクト
標準エラーの扱い方がB系と違うので注意。
未だに標準エラーだけを次に渡す方法がわからず。
記法 | 意味など |
---|---|
cmd > file |
cmdの標準出力をfileへ上書き |
cmd >> file |
cmdの標準出力をfileへ追記 |
cmd < file |
cmdの標準入力へfileをつなぐ |
cmd >& file |
cmdの標準エラーを標準出力と一緒にする B系だと cmd > file 2>&1 |
cmd |& next-cmd |
cmdの標準エラーを標準出力と一緒にしてパイプへ B系だと cmd 2>&1 | next-cmd |
(cmd > /dev/tty) >& /dev/null |
標準エラーのみ捨てる B系だと cmd 2> /dev/null |
((cmd > /dev/tty) >& /dev/null) | less |
標準エラーのみ捨てて、標準出力はパイプへ B系だと cmd 2> /dev/null | less |
cmd >! file |
noclobberの設定を無視 |
cmd >>! file |
noclobberの設定を無視 |
cmd >&! file |
noclobberの設定を無視 |
noclobber
存在するファイルへのリダイレクトを抑止するフラグ(上書防止用)