どうも $@ の扱いがよくわからないのです。最後の($#番目の)引数ってどうやって除去するんだろう?
(perl でいうところの pop @_ をやりたいのです)
cp とか mv とか、最後の引数だけ他とは違う扱いをするコマンドを書こうとしているのですが、うまい方法を思いつきません。そういうのはシェルスクリプトではやっぱり無理でしょうか‥
Cシェルでよいでしょうか。
引数の処理、の部分で引数の個数が取れるので、
while-endで回しつつ、if文とかはどうですか?
http://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html
Manpage of BASH
こんなのどうでしょう(bashの場合)。
ただし、$IFSの値がスペースでない場合は
「ALL_ARGS%」の後のスペースを
$IFSの先頭の文字に換える必要がありますが…
ALL_ARGS=”$*”
echo ${ALL_ARGS% *}
${@% *}とやると別の意味になってしまうので
ALL_ARGSで一度受けてます。
あ、‥すごいんですね bash の Parameter Expansion て‥
ていうか私が B shell のトークナイザの動作をちゃんと理解してないことを思い知らされたというか‥
(echo | sed を backtick で囲む、というワザは多用してまして、これでもたぶん同じことができますね、なるほど)
ありがとうございます。やっぱり個数を評価するしかないですかねぇ(Bシェルだとそれすら面倒だったり)。