シェルスクリプト総合@LINUX Part3
■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
2007/07/10(火) 23:17:13ID:qGthZdMEまあそれはそれとして、BASHウゼーとか言われる心配なく
平和にLINUX的スクリプト談義しましょうよ。
初めての自作スクリプト、自信ないから見てください。な初心者から
トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで
いろいろな人に参加して頂けると嬉しいです。
perlやらPythonやらの話が混ざっても良いんでない?
【sed】シェルスクリプト総合@LINUX Part2【awk】
http://pc11.2ch.net/test/read.cgi/linux/1154578200/
http://pc8.2ch.net/test/read.cgi/linux/1121994321/
>>2-5あたりに色々と。
0322login:Penguin
2007/11/16(金) 21:43:34ID:lBcVe9Afを考えたほうが根本的な解決になりそう
0323login:Penguin
2007/11/16(金) 21:44:56ID:PPFIsM3Hだから >>319 で言ったじゃん。
>>322
いや、あるときはあるでしょ。
そんなにおかしいことではない。
0324login:Penguin
2007/11/16(金) 22:02:10ID:lBcVe9Af>>321は''の囲み方が間違ってるだけだが
_があるのが普通って考えたほうが手間なくていい
windowsがらみならwindowsでやったほうがいい
0325320
2007/11/16(金) 23:35:30ID:q8UeZNS0ま、まぁ色々事情がありまして。あるんですよ。。。
>>323
>>319の事かと思ってレスを投稿する前に確認したのですが、
for DIR in ./*/
do
for TARG in `basename "${DIR}"`
do
echo ${DIR}
echo ${TARG}
done
done
で確認したところ 変数DIRには正しく取れました。 しかし
`basename "${DIR}"` としているにも関わらず
元ディレクトリ名 AVG Anti-Virus Free Edition 7.3
実行結果
AVG
Anti-Virus
Free
Edition
7.3
とこのように分断されてしまいます。 " " で囲っているにも関わらず、です。
何がいけないのでしょうか?
0326login:Penguin
2007/11/16(金) 23:59:15ID:2bsqELIPLIST="\"space aaa\" \"bbb\" \"space ccc\" \"ddd\"";
echo $LIST; # "space aaa" "bbb" "space ccc" "ddd"
func(){
echo "arg= $#"; #6
echo "$1"; # space
echo "$2"; # aaa
echo "$3"; # bbb
echo "$4"; # space
echo "$5"; # ccc
echo "$6"; # ddd
}
func $LIST;
上のようなスクリプトで
func には、"space aaa" みたいにスペースの入った引数を渡したいんですが、
なにか方法はないでしょうか? この場合funcにわたす引数を4つにしたいんです。
展開されて、引数が6つになってる。。。素人ですません。
0327login:Penguin
2007/11/17(土) 00:44:46ID:X3VLuMy8for TARG in `basename "${DIR}"` ->
for TARG in AVG Anti-Virus Free Edition 7.3
0328login:Penguin
2007/11/17(土) 07:31:23ID:FrK+lOPY$LIST をクォートする。
0329login:Penguin
2007/11/17(土) 08:31:04ID:tPTtgwaWこれだけで良かったんですね。
3時間くらい悩んでたよ。�d
0330login:Penguin
2007/11/17(土) 09:32:44ID:X3VLuMy80331320
2007/11/17(土) 10:54:12ID:oelt9+66レスありがとうございます。
そうなんですよ、そんな風に展開されてしまうんですよ。
${DIR} だけを出力しても
./AVG Anti-Virus Free Edition 7.3
となるのに
"${DIR}" とダブルクォートで囲っても
./AVG Anti-Virus Free Edition 7.3
と全く同じ出力になってしまう。つまりダブルクォートが利いてない・・。
だからそれをどうすれば1つの文字列として扱えるのですか?空白を区切りとしないようにする為には・・・。
0332login:Penguin
2007/11/17(土) 12:01:58ID:dajSe2oXbasename の結果が正しいんだからダブルクォートは効いてるだろ?
その後、`` で置き換えた時には既に "${DIR}" とは無関係の文字列なんだから
直書きされてるのと同様に空白で分割されてるだけ。
あえて書くなら
for DIR in ./*/
do
BASE=`basename "${DIR}"`
for TARG in "${BASE}"
do
echo ${DIR}
echo ${TARG}
done
done
っていうか、なんで 2 段で for を回す必要があるのか。
0333login:Penguin
2007/11/17(土) 12:23:43ID:dh2GLbwyバッククォート内はコマンドの出力に置き換えされるんだから、その出力を
クォートすればいい。
for TARG in "`basename "${DIR}"`"
っていうか、なんで 2 段で…
0334320
2007/11/17(土) 22:43:03ID:oelt9+66な、なるほど・・・・
お二人の解説文を10回ほど読み直しながらじっくり考えてみた所、ようやく理解できました。
特に "`basename "${DIR}"`" はややこしくて 最初は何をかいているのだろうかと思いましたが
`basename "{DIR}"` の出力結果そのものを " " で囲っているわけですね。なるほどなるほど。
う〜ん、これは思いつかない・・・。発想力ですか・・・。
で、2段でfor回していますが、確かに冷静に考えると2段で回す必要はありませんね・・・。
むしろ2段で回す処理にしている事で複雑化してしまった感があります。
1段forでいけそうです。
0335login:Penguin
2007/11/23(金) 15:28:58ID:P7OyMgNI拡張が必要になり、問題が増えました。
#!/bin/sh
echo $LIST; # "aaa aaa" "bbb" "ccc ccc ccc" "ddd"
func(){
〜処理〜
}
func "eee eee" "fff fff" "$LIST" "ggg ggg";
以下のようにfuncにスペースを含んだ形で
${LIST}とその他の値を同列に引数として渡したいのです。
↓funcに渡したい引数
"eee eee" "fff fff" "aaa aaa" "bbb" "ccc ccc ccc" "ddd" "ggg ggg"
>>328 >>330にあったように eval func で展開すると
LIST以外の引数がスペースで展開されてしまいます。
LIST以外の引数を "eee\ eee" とか"\"eee eee\""とする手で回避も可能ですが、
修正箇所が増えるので、極力この形は取りたくありません。
なにか方法はありませんか?
0336login:Penguin
2007/11/23(金) 22:55:10ID:rrMjYG9S0337login:Penguin
2007/11/23(金) 23:18:09ID:OSmgQwJosortしなくても2回目意向の重複を削除するコマンド内ですか?
0338login:Penguin
2007/11/23(金) 23:25:42ID:KoVu18yL0339login:Penguin
2007/11/24(土) 02:54:03ID:Qc2k01yBfunc をスペースを分割しないで処理するようにして、
func に渡す前に "$LIST" だけ分割しちゃえば良いんじゃないの?
0340login:Penguin
2007/11/24(土) 13:44:38ID:3ItHeK84おおおお、できました。ありがとうございました。
0341login:Penguin
2007/11/24(土) 15:57:48ID:uBYpiRKVFrom: "Jfda dsadsada" <[email protected]>
From - Fri Nov 21 14:53:45 2007
From: "rwerw dfsa" <[email protected]>
From - Fri Nov 23 14:53:45 2007
From: "a bcd" <[email protected]>
From - Fri Nov 23 14:53:46 2007
From: "abc" <[email protected]>
このようなテキストの中から、日付に対応したアドレスだけをテキストに出力するにはどうしたらいいのでしょうか?
11月20日が指定されたら[email protected]を出力
11月23日が指定されたら[email protected]と[email protected]を出力といった具合です
0342login:Penguin
2007/11/24(土) 16:23:59ID:bvlPAES00343login:Penguin
2007/11/24(土) 17:59:39ID:z00X8bIQできないのです。方法ありますか?
func内で echo $3; した場合。
func "eee eee" "fff fff" "$LIST" "ggg ggg";
echo $3 → "aaa aaa" "bbb" "ccc ccc ccc" "ddd"
当然のように、LIST全体が一つの引数に、、、
以下のようにクォートをなくすと
func "eee eee" "fff fff" $LIST "ggg ggg";
echo $3 → "aaa
LIST内のスペースで、分解されてしまいます。
$3 に "aaa aaa" を渡したいのに、、、
0344login:Penguin
2007/11/24(土) 22:04:52ID:DnopHw8Nperl かなんか使った方がいいんじゃね。
適材適所。
0345login:Penguin
2007/11/24(土) 22:28:40ID:bmHXinLtfunc "eee eee" "fff fff" "$@" "ggg ggg"
0346login:Penguin
2007/11/25(日) 17:46:10ID:ex492j4kこれだ!
こんなトリッキーな手法もあるんですね。
奥が深い。ありがとうございました。
0347login:Penguin
2007/11/25(日) 22:12:54ID:nNUo7Vyuありがとうございました
0348login:Penguin
2007/11/28(水) 16:44:21ID:lxwXbk7Lそのディレクトリの中にファイルがあった場合のみ変数にディレクトリ名を追加する。
という処理をしたいと考えています。
LIST=`find 特定のディレクトリ -maxdepth 1 -mindepth 1 -type d`
上記のコマンドでディレクトリ一覧は取得できたのですが
取得したディレクトリ一覧の中にファイルがあるかどうかの条件設定方法がわかりません
ご教授ください
0349login:Penguin
2007/11/28(水) 16:51:01ID:hjQ8uHjrGNU の find なら ! -empty で。
0350348
2007/11/28(水) 17:14:26ID:lxwXbk7Lレスありがとうございます。
LIST=`find 特定のディレクトリ -maxdepth 1 -mindepth 1 -type d ! -empty`
上記のコマンドで無事に条件を満たすことが出来ました。
感謝です><
0351login:Penguin
2007/11/30(金) 01:52:45ID:vbHro4B71 B
1 C
2 P
2 Q
3 X
3 Y
3 Z
...
のような入力を
1 A B C
2 P Q
3 X Y Z
...
のように整形する簡単な方法はありますか?
0352login:Penguin
2007/11/30(金) 02:21:47ID:8mp/o88K0353login:Penguin
2007/11/30(金) 13:45:29ID:zEAz9Kgp惚れた
0354login:Penguin
2007/12/01(土) 01:13:52ID:285rAG3t0355login:Penguin
2007/12/01(土) 01:27:18ID:aR34EpD+パイプでしか使った記憶がなく、素で知らなかった。
0356login:Penguin
2007/12/01(土) 11:59:35ID:lphCOL1Qパッと挙げろという方がむつかしいだろ
0357login:Penguin
2007/12/01(土) 12:16:31ID:z08ppphA0358login:Penguin
2007/12/01(土) 19:59:33ID:aR34EpD+0359login:Penguin
2007/12/01(土) 21:03:16ID:z08ppphA0360login:Penguin
2007/12/01(土) 23:25:16ID:+jVAJI5Z0361login:Penguin
2007/12/03(月) 14:25:58ID:pB5IpK3Q( { command1 && command2 } > normal.log ) >& error.log
で、標準出力と標準エラーをファイルにリダイレクトまではうまくいきました。
このエラー出力を、画面にも出すにはどんなふうに書くのでしょう?
ttp://x68000.q-e-d.net/~68user/unix/pickup?%A5%EA%A5%C0%A5%A4%A5%EC%A5%AF%A5%C8
ちなみに、ここまではこの辺を参考にさせていただきました。
お願いいたします。
0362login:Penguin
2007/12/03(月) 14:26:53ID:pnpsuBAGtee
0363login:Penguin
2007/12/03(月) 15:02:26ID:pB5IpK3Qありがとうございます
できました。
最初に言ってたのとちょっと違うのですが、ようは、すべてログに保存して
なおかつERRORの文字が入ってる行だけを画面に出力したかったので
2>&1 | tee file.log | grep ERROR
でやりたいことができました。
いろいろ勉強になりました。サンクス。
0364login:Penguin
2007/12/03(月) 16:10:39ID:+7LXyEUmhttp://opentechpress.jp/developer/article.pl?sid=07/12/03/0133253
0365login:Penguin
2007/12/03(月) 16:33:46ID:CJjSSdo9面白そうだけど、記事の中に具体的な画像が欲しいね・・・・
0366login:Penguin
2007/12/03(月) 16:43:39ID:pm3xTTNyhttp://code.google.com/p/hotwire-shell/wiki/Screenshots
0367login:Penguin
2007/12/03(月) 17:31:20ID:BNt6sl0D画像が表示されないのは、送ってくるContent-Typeがおかしいのか。
なんでapplication/octet-streamやねん。
0368login:Penguin
2007/12/04(火) 22:59:48ID:Bpu7L1AFシェルスクリプトの本を買う際に、Linuxユーザーでbashメインで使ってるなら
主旨がbash向けのものを買うべきですか?
それともB shell全般向けやsh向けでbashは補完程度の本でも質の高いものを買うべきでしょうか
両シェルの間にそれほど機能、性格の差はなさそうだし
0369login:Penguin
2007/12/04(火) 23:06:21ID:0gQg9Z1k素のBourne Shellの機能がどこまでなのか書いてある本がいいと思う。
0370login:Penguin
2007/12/04(火) 23:28:47ID:Bpu7L1AFサンクス
sh向けでも最近の多くの書籍はbashもカバーしているようですので、その辺りを探してみます
0371login:Penguin
2007/12/05(水) 11:12:29ID:tDVDuECIそのへん意識するならこれいいかも。
SunOS の bsh と FreeBSD の bsh ( ash ) で違いがある場合についてまで
明記されてる。
0372login:Penguin
2007/12/05(水) 21:59:53ID:KlliiKVCその本と、「UNIXシェルスクリプトコマンドブック 山下 哲典」を最後に候補にしてましたが、後者を買いました。
sh、bash共用でサンプルが多いので。
0373login:Penguin
2007/12/06(木) 18:06:51ID:ltYfbiEn#!/bin/bash
WAITSEC=""
if [ -z "$WAITSEC" -o $WAITSEC -lt 60 ]; then
WAITSEC=10
fi
を実行すると
./hoge.sh: line 3: [: too many arguments
というエラーになります。-oとか-aで記述するifは今まで何回かやったのに
一度もできた記憶が無い!!。結局ifを分けたりして対処してきた負け人生です。
いったい何が悪いというのでしょうか??
教えていただけますか?
0374login:Penguin
2007/12/06(木) 18:31:24ID:bgO18Eza#!/bin/bash
WAITSEC=$1
if [ -z "$WAITSEC" ] || [ $WAITSEC -lt 60 ]; then
WAITSEC=10
fi
echo $WAITSEC
とりあえずこれで。
0375login:Penguin
2007/12/06(木) 18:35:40ID:bgO18Ezaif [ -z "$WAITSEC" -o \( $WAITSEC -lt 60 \) ]; then
こういうことだな。
優先順位がおかしいんだ。
0376login:Penguin
2007/12/07(金) 00:20:04ID:2WlU8Mqa-z "$WAITSEC" の成否にかかわらず $WAITSEC -lt 60が実行されちゃってるから問題なんじゃないか?
おそらく -z "$WAITSEC"のときは 後ろの条件は 「-lt 60」になるだろうから、>>374のようにするか${WAITSEC:-0}とかやったらいいんじゃね?
0377login:Penguin
2007/12/07(金) 10:01:03ID:uKkYmJTBなので、
>if [ -z "$WAITSEC" -o $WAITSEC -lt 60 ]; then
は
if [ -z "" -o -lt 60 ]; then
と解釈されてエラー。
zsh は sh と違って $WAITSEC は "$WAITSEC" と同じ意味なのでエラーにならない。
"$WAITSEC" -lt 60 と書き換えた場合は、
>-z "$WAITSEC" の成否にかかわらず $WAITSEC -lt 60が実行されちゃってるから問題なんじゃないか?
この理由で正しい。
0378login:Penguin
2007/12/11(火) 22:53:04ID:8t30b6aC# comment
っていう感じに # を行頭につけてコメントにしますが、自作のシェルスクリプト等に
日本語でコメントを埋め込むのは良くない事なのでしょうか?
英語でコメントを埋め込むべきなのでしょうか?
理由>環境によっては文字化けするかもしれないから
その場合、英語では上手くコメントがかけないのですが、、、皆さんはこの辺どうしていますか?
0379login:Penguin
2007/12/11(火) 23:22:06ID:8VUAk6YG英語では上手くコメントがかけない、って、自分が書いた自分用のスクリプトだったら、
べつに、自分にさえ分かればいいんじゃないの?極端な話、ローマ字で書いた日本語でもいいんじゃないかと。
0380login:Penguin
2007/12/11(火) 23:27:45ID:LcSZkVoIと思ったんだが、そうでもないみたいだな。
0381login:Penguin
2007/12/12(水) 08:33:10ID:itajSrlGいやー、他の人にもスクリプトの内容が分かるようにコメント書かないといけない場合はどうすれば?
今はローマ字で書いたりしていますが、さすがに見にくいというか・・・ かといって英語では上手くかけないし・・
C言語やJava等では // 日本語コメント が使えるし
MS-DOSの.batファイルでも
REM 日本語コメント
が使える、Windows Script Hosting(WSH)であっても
'日本語コメント
が使えて、大抵のスクリプト言語は日本語のコメントが使えるのになぜにLinuxのシェルスクリプト
だけこんな事で悩まないといけないんだろうと・・・。
まぁOSが違うから文字コード周りのトラブルなんだろうけど・・。
0382login:Penguin
2007/12/12(水) 09:12:34ID:fnWAKO+5確実に自分しか使わないならShift_JISのようなbrain damagedな文字コードじゃなきゃ
別に何でもいいんじゃない。
しかし使ってよいか使わざるべきかというと、一般にスクリプトって
どのロケールで実行されるかわからないよとかの問題が出てくる。
あなたが出した例ではCやJavaのソースファイルはコンパイルするときの
環境が限定できれば問題ないし、DOSのバッチファイルも日本語DOSしか
考えていない。
0383login:Penguin
2007/12/12(水) 11:25:06ID:ytRjAEExsjis だろうが何だろうがコメントの継続なんてありません。
>しかし使ってよいか使わざるべきかというと、一般にスクリプトって
>どのロケールで実行されるかわからないよとかの問題が出てくる。
コメントにロケールなんて関係ありません。
0384login:Penguin
2007/12/12(水) 11:32:57ID:11rQvfIz0385login:Penguin
2007/12/12(水) 12:33:25ID:5zz/Y7Bmそんな雰囲気だと、頑張って英語でコメントを書いても、
肝心の「他の人」が、それを理解出来ない、
ということが容易に想像出来てしまうわけで、
だったらローマ字でいいじゃん、と思う。
0386login:Penguin
2007/12/15(土) 11:57:10ID:FOfJjZuVコメントってのは実行されるときはロケール関係ないけど
元々読むものだから、ロケールばらばらと読みにくくて困るよね
って意味だよ。たぶんね。
0387login:Penguin
2007/12/19(水) 22:19:06ID:qeHYVBDHfor i in *.txt
で、'*.txt' で展開されるリストの長さに制限はある?
ls: argument list too long になる長さでも処理できるようだが、他に何か別の制限はある?
0388login:Penguin
2007/12/20(木) 18:50:14ID:Qtkk7tpxaaa
bbb
ccc
という出力を、sedコマンドで一行にしたいのです。
aaa bbb ccc このように。
どうしたらよいですか。
逆の、sed -e 's/\ /\n/g' はできるのですが。
0389login:Penguin
2007/12/20(木) 21:20:24ID:1r8qT2Sh$ (出力するコマンド) | awk '{printf("%s ", $0)}'
でできるんだけどなぁ
0390login:Penguin
2007/12/20(木) 21:47:48ID:p9kMPhFxaaa
bbb
ccc
$ sed -n 'H;${g;s/¥n/ /g;s/^ //p;}' input
なんか無様だ。きっともっとスマートに出来るに違いない。
0391login:Penguin
2007/12/20(木) 21:49:27ID:p9kMPhFxecho `cat 元テキスト` > 新テキスト
でいいな。
0392login:Penguin
2007/12/20(木) 22:14:22ID:IRXLh3Oksed ':loop; N; s/\n/\ /g ;$!b loop' hoge
0393login:Penguin
2007/12/20(木) 22:19:20ID:UDgG5/dTtr -s '\n' ' ' < input
とか
0394login:Penguin
2007/12/20(木) 22:28:20ID:p9kMPhFx$ fmt input
fmtってUNIX標準?
0395login:Penguin
2007/12/20(木) 22:39:06ID:Qtkk7tpxこんなにレスが来るとは。
皆さんありがとうございます。
すべて試してすべてで出来ました。
echoとtrはなるほどという感じです。
他は知りませんでした。レベル1アップですね。
0396login:Penguin
2007/12/20(木) 22:43:02ID:Qtkk7tpx更新遅れた。
できました。オプションすらいらないとは。
0397login:Penguin
2008/01/06(日) 19:04:19ID:tfZRITK8awk '{print $2,$3}' とすると2,3番目が表示されますが
二番目以降全て表示するにはどうすればいいのでしょうか?
0398login:Penguin
2008/01/06(日) 19:44:21ID:TN85yzo60399login:Penguin
2008/01/06(日) 21:41:07ID:HrtO6pOF0400login:Penguin
2008/01/06(日) 21:53:19ID:xjxCtnUs0401login:Penguin
2008/01/06(日) 22:56:50ID:HrtO6pOF>>397の「全て」がそこまで求めているかは分からないが。
0402login:Penguin
2008/01/07(月) 00:59:34ID:Lq+3ioDoawk -Fなにか '{for (i=2;i<NF;i++){printf("%s%s", $i, FS)};print $NF}'
0403397
2008/01/07(月) 02:29:17ID:SZZlXYY6最初 >>387 さんと同じことを思ったのですが他に
オプションか何かで用意されていると思ってました。
402さんのを使わせていただきます
0404397
2008/01/07(月) 02:29:58ID:SZZlXYY60405login:Penguin
2008/01/07(月) 17:21:59ID:CzyB4/IBこれだと複数の空白が一つになって表示される
0406login:Penguin
2008/01/07(月) 18:30:26ID:DBTZ8VT20407login:Penguin
2008/01/07(月) 18:59:30ID:AGg2gknUaho,choaho,kusoaho,doaho
∴
awk '{print substr($0,length($1)+2)}'
0408login:Penguin
2008/01/07(月) 20:07:07ID:81ckgAQ5gawk 'gsub(/^[[:blank:]]*[^[:blank:]]+/,"")'
かな。
0409login:Penguin
2008/01/07(月) 20:13:04ID:DBTZ8VT20410login:Penguin
2008/01/07(月) 23:07:24ID:6d+dex8Hbar=234
[file2]
foo=123
Bar=987
と2つのkey=valueな内容が入ってるファイルがある。ここで、file1には
ないがfile2にはあるkeyのみ(case-insensitiveな比較で、また、valueは
違っていてよい)を拾いkey=valueを出力したいのだけど、一行で書けないかな?
どういう出力になってほしいかというと
$ myuniq --split-char='=' --field-index=1 --print-unique file1 file2
foo=123
というような実行イメージ。awkで
awk -F= '{ line[toupper($1)]=$0; seen[toupper($1)]++; } END { for (key in line) if (seen[key] == 1) print line[key]; }' file1 file2
みたいなのはでっち上げたんだけど、正直汚い。
0411login:Penguin
2008/01/07(月) 23:30:18ID:6RYIn4eu2ファイル通して1回しか現れなかったものを表示するから、
「file1にはないがfile2にある」ものだけでなく
「file2にはないがfile1にある」も出てこないか?
0412login:Penguin
2008/01/07(月) 23:35:18ID:6RYIn4eufor w in `cut -d= -f1 file1 file2 |tr A-Z a-z|sort|uniq -c|sed -n 's/ 1 *//p'`; do grep "^$w=" file2; done
0413login:Penguin
2008/01/07(月) 23:52:40ID:DBTZ8VT2重複は無考慮
0414login:Penguin
2008/01/07(月) 23:54:29ID:6d+dex8Hあ、すみません。バグです。が、元の仕様が厳しすぎで、
どちらかにしかないエントリを出す
でも大丈夫でした。
file1かfile2のどちらかにのみあるkeyに対応するkey=valueを出力する
に仕様を訂正させてください。
何をしたいのかというと、Windowsの環境変数を手元のUNIXな環境に
取り込みたいのですが、その際に自分で定義している分については
上書きされないようにしたいのです。
hostA$ env > hostA.env
hostB$ env > hostB.env
hostB$ myuniq ... hostA.env hostB.env > diff.env
hostB$ . ./diff.env
みたいなことをしたいと。で、片方の環境が Windows なもので、
case insensitiveな比較とかも必要になってます。
行全体ではなく特定のフィールドのみ見て uniq/diff 処理して出力って
簡単そうで微妙に面倒です。
0415login:Penguin
2008/01/07(月) 23:59:58ID:6d+dex8Hおおー。grepのexprに改行入れるとそんな動作になるとは!
エレガントです。勉強になりました mOm
0416login:Penguin
2008/01/08(火) 18:35:59ID:0P1F18Bp2つ目に実行したコマンドに、1つ目に実行したコマンドの引数を
そのまま渡したい場合の記述方法がわからず、困っています。
$ vi hogehoge; echo ??
*??が不明箇所*
上記の例の場合は2つ目に実行しているecho文の出力結果でhogehogeを表示させたいのですが。。
対処方法はないでしょうか?
よろしくお願いいたします。
0417login:Penguin
2008/01/08(火) 18:38:30ID:k6k1za9Ni="hogehoge"; vi $i; echo $i
じゃだめなん?
0419login:Penguin
2008/01/08(火) 23:12:30ID:OqUgF6yk0420login:Penguin
2008/01/08(火) 23:26:00ID:5sg6/WvNそれタイプしたタイミングではまだ!$は前行のコマンドの。
0421login:Penguin
2008/01/08(火) 23:33:15ID:A2IkwjENvi hogehoge; echo $_
でもいけるな。
■ このスレッドは過去ログ倉庫に格納されています