Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2914

bash, cshどちらからでもsourceできるスクリプトの書き方

$
0
0

死んでも同じようなコードをふたつ書きたくないめんどくさがりな人向け。ネタです。

条件分岐

ifの文法が異なっていて使えないので、test&&||をつないで条件分岐する。

test 条件式 && 真の場合 || 偽の場合

変数の代入、出力

bashスタイルで代入してみて、エラーになったらcshスタイルで代入する。出力の仕方は同じ。

x=hoge >& /dev/null || set x=hoge
echo $x

環境変数の代入、出力

同じような感じ。cshでは変数と環境変数で名前空間が別のようだ。

export x=hoge >& /dev/null || setenv x hoge
printenv x

bash / csh判定

psコマンドでプロセスIDからコマンド名を調べる。これができれば後はbash用のスクリプトとcsh用のスクリプトを別に用意してここでsourceすれば良い。

ps -p $$ -o comm= | grep csh  > /dev/null && echo これはcsh
ps -p $$ -o comm= | grep bash > /dev/null && echo これはbash

ヘルプを表示

bashの場合、sourceされたスクリプトから抜けるにはreturnを使う。cshにreturnはなく、エラーになるのでexitで抜ける。

test "$1" = "-h" && \
  echo "Usage: source hoge [-h]" && \
  echo "  " && \
  return >& /dev/null
test "$1" = "-h" && exit

Viewing all articles
Browse latest Browse all 2914

Trending Articles