[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/10 01:32 / Filesize : 243 KB / Number-of Response : 985
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

シェルスクリプト総合@LINUX Part4



1 名前:login:Penguin mailto:sage [2008/05/17(土) 13:44:57 ID:9hFWtCOD]
UNIX板のスレを見ている方も多数おられるかと思いますが、
まあそれはそれとして、BASHウゼーとか言われる心配なく
平和にLINUX的スクリプト談義しましょうよ。

初めての自作スクリプト、自信ないから見てください。な初心者から
トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで
いろいろな人に参加して頂けると嬉しいです。

perlやらPythonやらの話が混ざっても良いんでない?

Part3 : pc11.2ch.net/test/read.cgi/linux/1184077033/
Part2 : pc11.2ch.net/test/read.cgi/linux/1154578200/
Part1 : pc8.2ch.net/test/read.cgi/linux/1121994321/

>>2-5あたりに色々と。

596 名前:login:Penguin mailto:sage [2008/11/25(火) 17:56:31 ID:DFgMW53d]
宿題かよw
shスクリプト 足し算 でググれば一発だろw

597 名前:login:Penguin mailto:sage [2008/11/25(火) 18:10:21 ID:MTxeuCTC]
一発だった^^

#!/bin/sh
for i in "$@"; do echo $i; done |
sed '
    1 {h; s/.*/hgfedcba/; x}
    H; g
:a
    s/9$/aaaaaaaaa/; s/8$/aaaaaaaa/; s/7$/aaaaaaa/; s/6$/aaaaaa/
    s/5$/aaaaa/; s/4$/aaaa/; s/3$/aaa/; s/2$/aa/; s/1$/a/; s/0$//
    s/\(aa*[^a]*\)\(a*\)/\2\1/
    s/a\{11\}/ba/
    y/hgfedcba/gfedcbah/
    /^h/!ba; s/.$//; h; $!d
    s/\([a-z]\)\1\1\1\1\1\1\1\1\1/9/g; s/\([a-z]\)\1\1\1\1\1\1\1\1/8/g
    s/\([a-z]\)\1\1\1\1\1\1\1/7/g; s/\([a-z]\)\1\1\1\1\1\1/6/g
    s/\([a-z]\)\1\1\1\1\1/5/g; s/\([a-z]\)\1\1\1\1/4/g; s/\([a-z]\)\1\1\1/3/g
    s/\([a-z]\)\1\1/2/g; s/\([a-z]\)\1/1/g; s/\([a-z]\)/0/g
    s/^0*\(.\)/\1/
'

598 名前:login:Penguin mailto:sage [2008/11/25(火) 18:14:44 ID:DFgMW53d]
>>597
sed好きなの?
一応、>>596>>591 に対して言ったつもりだからね^^

599 名前:login:Penguin mailto:sage [2008/11/25(火) 20:44:14 ID:b3v2wMU+]
普通はexprとかletなんだろうな
あとはbcに渡しちゃうとか。

bashならこんな書き方もできるけどあまり使わないな。
$hoge=$[$1 + $2 + $3 + $4 + $5]

600 名前:login:Penguin mailto:sage [2008/11/25(火) 21:27:49 ID:Q3bl66bL]
>>599
これははじめてみたなぁ
$(())といいこれといい、演算機能つけるなら普通に
$hoge=$1+$2+$3+$4+$5
みたいな書き方許してくれもいいのにね

601 名前:login:Penguin mailto:sage [2008/11/25(火) 22:33:31 ID:MTxeuCTC]
$(( $1 + $2 )) はPOSIX shellの範囲にあるけど
$[ $1 + $2 ] はbash拡張(しかもdeprecated)だ。letもPOSIXにない。

602 名前:login:Penguin mailto:sage [2008/11/25(火) 22:49:51 ID:+1wUZzkP]
>>599-601
単なる宿題の手伝い、つまんね。sed狂の人ぐらいヒネってちょ。

603 名前:login:Penguin mailto:sage [2008/11/26(水) 01:23:56 ID:XqTaeM1U]
$(( $1 + $2 )) これってできるんだ?
$((hoge + hogehoge)) みたいな書き方しかできないと思い込んでた

604 名前:login:Penguin mailto:sage [2008/11/26(水) 16:54:19 ID:fRJ0bu/c]
>>602
題意を満たしながらも難解で意味不明で実用性皆無なスクリプトを書くのも楽しいな。

#!/bin/sh
echo $@`shift;echo -e \\\t|expand -t$#|tr \ +`p|dc

とか。




605 名前:login:Penguin mailto:sage [2008/11/27(木) 12:25:07 ID:nbCEJRVf]
引数不定で最短なら
(IFS=+;echo "$*")|bc
とかどうだろう

606 名前:login:Penguin mailto:sage [2008/11/27(木) 13:28:41 ID:u0PIuWVz]
>>604
シェルスクリプトにバイナリ埋め込んどくとかな。
…よく考えたら、これは悪どいな。
実行するまで何が起こるか判らないし、自分が生徒からこんなの
送りつけられたら無条件で○をあげてしまいそうだ。

607 名前:login:Penguin mailto:sage [2008/11/27(木) 17:14:51 ID:Rh4WMeZa]
$ echo "#!/bin/bash" > hoge

とすると

bash: !/bin/bash": event not found

とエラーになります。

$ echo "#\!/bin/bash" > hoge

と ! をエスケープしたつもりでも

$ cat hoge
#\!/bin/bash

と \ が余分に付いてしまいます。

!を上手くエスケープするにはどうしたら良いでしょうか?

608 名前:login:Penguin mailto:sage [2008/11/27(木) 17:30:00 ID:L8oSt/LM]
よくわからないから '#!/bin/bash'

609 名前:login:Penguin [2008/11/27(木) 19:33:56 ID:JHgCmyIe]
>>607
$ echo "#!/bin/bash"
の解釈↓

$ man bash
イベント指示子 (Event Designator)
!string
  string で始まるコマンドのうち、一番現在に近いところで実行したものを参照します。


610 名前:607 mailto:sage [2008/11/28(金) 20:18:54 ID:yC0octAN]
>>608>>609
ダブルクォート内では ! のエスケープはできないようですね。
シングルクォートで囲むことにします。
ありがとうございました。

611 名前:login:Penguin mailto:sage [2008/12/07(日) 04:03:19 ID:wQWU7SKF]
厳密にはexpectの質問なので、スレ違いだはと思うのですが…

1 #!/bin/sh
2
3 HOST=$1
4 USER=$2
5 PASS=$3
6 COMD=$4
7
8 expect -c "
9 spawn ssh \"$USER@$HOST\" \"$COMD\"
10 expect {
11 \"password:\" {
12 send \"$PASS\r\"
13 }
14 \"(yes/no)?\" {
15 send \"yes\r\"
16 exp_continue
17 }
18 }
19 expect
20 "
21 echo $?

9行目でspawnしたsshの戻り値を得たいのですが、どうしたら良いでしょうか?
上記だと、当然ですが、21行目で表示されるのは8行目のexpectの戻り値になります。
あt、19行目のexpectが無いと動かないのですが、そんな物なんでしょうか?

612 名前:login:Penguin mailto:sage [2008/12/09(火) 09:16:00 ID:73r9bgNC]
ssh-agent使った方が簡単。

1. exit statusはwaitを使って得て、exitでshellに引き渡してください。
2. 10行目のexpectで、パスワード、ホストキー以外の出力も食うようにする。

613 名前:login:Penguin mailto:sage [2008/12/13(土) 01:21:37 ID:jyj+RUH2]
>>612
> 1. exit statusはwaitを使って得て、exitでshellに引き渡してください。

これのやり方をもう少し具体的にお願いできませんか?

manに以下の記述はあるんだけど、

wait は、通常 4 つの整数のリストを帰す。最初の整数は、終了を待ち構え
ているプロセスの pid である。 2 つめの整数は、関連する spawn id であ
る。 3 つめの整数は、オペレーティングシステムエラーがあれば -1、そう
でなければ、0 である。 3 つめの整数が 0 であれば、4 つ め の 整 数
はspawn さ れたプロセスからのリターンコードである。3 つめの整数が -1
であれば、4 つめの整数はオペレーティングシステムによって設定さ れ た
errno の値である。

この値をどうやって受け取るのかわからないのです。
tarballのexampleの中も見てみたけど、waitから値を受け取るような処理は無いようでした。

614 名前:login:Penguin mailto:sage [2008/12/13(土) 22:44:02 ID:b12qnNPM]
#!/bin/sh
echo '何かオモシロいスクリプトをうpして'



615 名前:login:Penguin mailto:sage [2008/12/13(土) 22:49:30 ID:4TqEVqdZ]
>>614
sudo su -c ”yes ’\(^o^)/’ > /dev/sda”

これやってから、ハードディスクを覗くと楽しいよ

616 名前:login:Penguin mailto:sage [2008/12/14(日) 03:10:56 ID:YLiph78l]
>>615
新しいなwww

617 名前:login:Penguin mailto:sage [2008/12/14(日) 03:51:27 ID:07cIEQdu]
yesなんてコマンド始めて知ったわ。
健全な使い道あるのか?と思ってググったら
同じ疑問持ってる人が一杯いた。
rpm -e yes じゃ削除できないし。
GNUはこんなコマンド標準装備するな

618 名前:login:Penguin mailto:sage [2008/12/14(日) 04:46:19 ID:x3iOnWd3]
>>617
つ yes no | rm -i ...

rm -iのトコはまともにバッチ実行させてくれない色々なクサレプログラムに
置き換えて使え。

619 名前:login:Penguin mailto:sage [2008/12/14(日) 09:43:49 ID:M7gNbgdV]
誰のせいでもありゃしない みんなGNUが悪いのさ
と「悲しき願い」の節で浮かんだ。

"yes"コマンドの責めまで負わせられるとはGNUも気の毒に。

620 名前:login:Penguin mailto:sage [2008/12/14(日) 09:45:30 ID:h0ChkGK1]
ベースシステム=GNUなんだろうな。
だからGUI厨は・・・

621 名前:login:Penguin mailto:sage [2008/12/14(日) 10:27:04 ID:v1K8r+s5]
>>613
> この値をどうやって受け取るのかわからないのです。

返すから受け取れ。


622 名前:615 mailto:sage [2008/12/14(日) 10:56:04 ID:qZcnFZNK]
>>617
例えば、テキストインストーラーで、ずっと Enter でデフォルトのまま流したい場合、
例えば、vmware-config.pl とか、
  $ yes | sed 's/y//' | vmware-config.pl
とすると、自動インストールができるよ。
yes で有り難みを感じたのってこれくらいかな。

623 名前:login:Penguin mailto:sage [2008/12/14(日) 11:28:15 ID:v1K8r+s5]
$ yes "" | apt-get install 〜
で、コンフィグファイルをパッケージの物で上書き


624 名前:login:Penguin mailto:sage [2008/12/14(日) 18:19:59 ID:vb4UhgIp]
yes >/dev/null
としてCPU負荷が高い状態を簡単に作り出せる



625 名前:login:Penguin mailto:sage [2008/12/14(日) 19:12:16 ID:FrsrwlIw]
>>624
ああ、これは良い方法を教えて貰った。

626 名前:login:Penguin mailto:sage [2008/12/14(日) 21:39:45 ID:qZcnFZNK]
yes も色々使い方があるもんだな。
今日はとても勉強になった。良スレだ。

627 名前:login:Penguin mailto:sage [2008/12/14(日) 21:43:23 ID:ntvk42pK]
yes we can

628 名前:login:Penguin mailto:sage [2008/12/15(月) 00:30:34 ID:z26qt3ci]
command && echo true || echo false
これって
if command ; then echo true ; else echo false ; fi
これと同じ意味ですか?

やってみると同じなんだけど
上のやつはcommandの戻り値を||のところで取れてるのが納得がいかないんですが

629 名前:login:Penguin mailto:sage [2008/12/15(月) 01:16:56 ID:JDbCwPLG]
>>628
|| は制御演算子だから。詳しくはman bash

630 名前:login:Penguin mailto:sage [2008/12/15(月) 01:33:20 ID:SVRwhtMn]
>>628
Cと一緒やん。
ショートカット倫理演算って奴。

631 名前:login:Penguin mailto:sage [2008/12/15(月) 01:38:22 ID:qGdHBZUC]
echo true のところが偽になったらまずい

632 名前:login:Penguin mailto:sage [2008/12/15(月) 11:03:10 ID:furyu78m]
>>621
どうやら、Tclの知識が全く足りてなかったようでした。

set wait_ret [wait]
set exit_st [lindex \$wait_ret 3]
exit \$exit_st

こんな感じで行けました。

633 名前:login:Penguin mailto:sage [2008/12/15(月) 11:40:13 ID:+qLfSAKJ]
>>630
りんり?

634 名前:login:Penguin mailto:sage 違うか [2008/12/15(月) 14:34:12 ID:X1Zh6Thx]
倫理回路を知らんのか。
ギル博士の笛の音で制御されるんだぜ。



635 名前:login:Penguin mailto:sage [2008/12/15(月) 23:06:26 ID:yFzlGNM+]
(>>634 or true) die;

636 名前:login:Penguin mailto:sage [2008/12/16(火) 05:24:51 ID:e+M4JPQL]
不完全な倫理回路は精神を抑止きれないのであった。

637 名前:login:Penguin mailto:sage [2008/12/16(火) 18:42:45 ID:JR7TYwVP]
yesって何?
まじでわからん。

638 名前:login:Penguin mailto:sage [2008/12/16(火) 18:45:24 ID:5tMU0aGB]
>>637
man yes

639 名前:login:Penguin mailto:sage [2008/12/16(火) 20:22:10 ID:SAzVk+y/]
>>637
yes man

640 名前:login:Penguin mailto:sage [2008/12/16(火) 22:17:36 ID:cBajdfGN]
>>637
Siberian Khatru という名曲がありましての。
ttp://jp.youtube.com/watch?v=jpkkduTzR70

641 名前:login:Penguin mailto:sage [2008/12/17(水) 00:28:54 ID:nY30U6Zi]
>>640
俺をギター弾きと知っての狼藉か。

なになに? コマンドなのか。
ちょと叩いてみよう。


$ yes

っと


わーーーーーーーーーーーーーーーーーーーーー!

642 名前:login:Penguin mailto:sage [2008/12/17(水) 00:41:20 ID:TMrKHF72]
>>641
フいたwww

643 名前:login:Penguin mailto:sage [2008/12/17(水) 17:57:34 ID:Hofst7JZ]
yes(1)                                                                  yes(1)



名前
       yes - kill されるまで文字列を繰り返して出力する

書式
       yes [string...]

       yes [--help] [--version]

説明
       yes はコマンドライン引数をスペースで区切って末尾に改行 (newline) を付加
       し、 kill されるまで繰り返して表示する。引数が一つも与えられな い と 、
       yes は ‘y’ に改行を付加したものを kill されるまで表示しつづける。



644 名前:login:Penguin mailto:sage [2008/12/17(水) 17:58:07 ID:Hofst7JZ]
オプション
       GNU  yes が引数一つだけで起動された場合には、以下のオプションが認識され
       る:

       --help 標準出力に使用方法のメッセージを出力して正常終了する。

オプション
       GNU  yes が引数一つだけで起動された場合には、以下のオプションが認識され
       る:

       --help 標準出力に使用方法のメッセージを出力して正常終了する。

       --version
              標準出力にバージョン情報を出力して正常終了する。

注意
       プログラムのバグについては bug-sh-utils@gnu.org に報告してください。 ペ
       ージの更新は Ragnar Hojland Espinosa <ragnar@ragnar-hojland.com> が行っ
       ています。



GNU Shell Utilities 2.1          18 June 2002                           yes(1)




645 名前:login:Penguin mailto:sage [2008/12/17(水) 17:59:46 ID:Hofst7JZ]
>>637
そんな君へこれを送ろう.
sudo su -c ”yes ’\(^o^)/’ > /dev/sda”


646 名前:login:Penguin mailto:sage [2008/12/17(水) 18:04:23 ID:OCczPzah]
>>643
なぜコピペ?

647 名前:login:Penguin mailto:sage [2008/12/17(水) 18:05:37 ID:cv0gYoNp]
コピペじゃないやい
一生懸命整形したよ!

648 名前:login:Penguin mailto:sage [2008/12/17(水) 20:58:34 ID:QJhvpz4O]
yes | cat -n

649 名前:login:Penguin mailto:sage [2008/12/17(水) 22:46:05 ID:nY30U6Zi]
>>645
すみません。
リセットボタンを教えても起動しなくなりました。

なんつて

650 名前:login:Penguin mailto:sage [2008/12/20(土) 01:33:20 ID:6Sgnm3ob]
>>649
> なんつて
うん、こーゆーの、たのしーね。

651 名前: ◆Da4YWdyXjw [2008/12/21(日) 15:07:37 ID:hJtYLWzf]
line 27: =/home/user1: No such file or directory

こんなエラーが出るので、27行目を見てみると
homedir="/home/${username}"

たったこれだけ。cdとかmkdirとかしていないのに、ただ変数に代入しただけなのに
このエラーはなんなの??

652 名前:login:Penguin mailto:sage [2008/12/21(日) 15:12:54 ID:YLiOEgKM]
>>651
=の前に空白が入ってんじゃないの?
a=bだったら、「bをaに代入する」になるけど、
a =bだったら、「aコマンドの引数に=bを渡す」になるぞ。

653 名前:login:Penguin [2008/12/21(日) 15:16:00 ID:hJtYLWzf]
>>652
すまん、代入するとき変数名に$が入ってた。
他の言語からかじったもんでちょっと戸惑うわ。。

654 名前:login:Penguin mailto:sage [2008/12/21(日) 15:39:47 ID:YLiOEgKM]
>>653
sh -x で実効すると、各行がどのように展開されるのかがわかる。
シェルスクリプトデバッグの基本。



655 名前:login:Penguin [2008/12/21(日) 15:44:29 ID:hJtYLWzf]
>>654
まじサンクス

656 名前:login:Penguin mailto:sage [2008/12/25(木) 11:10:51 ID:fon1CsAn]
>>654
マジサンクス

657 名前:login:Penguin mailto:sage [2008/12/25(木) 12:15:54 ID:moDMTMWz]
マンスジクサ

658 名前:login:Penguin mailto:sage [2008/12/25(木) 14:44:55 ID:Dd8u5It4]
てか知らんかったのけ?

659 名前:login:Penguin [2008/12/25(木) 14:58:41 ID:hn65XKo2]
このスレって時間の流れが遅いのか?
それとも過疎っているだけなのか。

660 名前:login:Penguin mailto:sage [2008/12/25(木) 19:17:43 ID:lvg0uyHv]
>>654
知らなかった、これは便利そうですね

661 名前:login:Penguin mailto:sage [2008/12/25(木) 22:56:07 ID:lGWnJcnf]
他にかっこいいオプションないですか?
-vは結構イカしてると思ってますよ

662 名前:login:Penguin mailto:sage [2008/12/26(金) 00:41:27 ID:W2RM7LsO]
sh -nもイカしてる。
うっかり実行すると抜けられなくなる。

663 名前:login:Penguin mailto:sage [2008/12/26(金) 00:46:12 ID:K8BYEhlr]
-nってmanに載ってないんだけど何が起こってるのこれ?

664 名前:login:Penguin [2008/12/26(金) 00:53:59 ID:3z8SP2D0]
ん?みんなUnixいじった経験とかあるんか?

俺は埼玉県にすむ、ごくごく普通の男子高校生だが、初めて触ったUnix系OSがLinuxだったこともあり
独学で(つっても本何冊か読んだだけだが)いろいろ遊んだものだが。。
どうしたらそんなに詳しくなれるんだよ。仕事とかで使ってるんかおい!



665 名前:login:Penguin mailto:sage [2008/12/26(金) 01:11:34 ID:ivB4KFEt]
>>661
-e
エラーが発生したらそこで止まる。

666 名前:login:Penguin mailto:sage [2008/12/26(金) 02:52:13 ID:WW2wJ8bx]
>>665
きゃー すてき   かなw

で -n って何よ。
なに? やればわかるって?
よしゃやってみる。

667 名前:login:Penguin mailto:sage [2008/12/26(金) 02:53:50 ID:WW2wJ8bx]
なにもしないのだが...

668 名前:login:Penguin mailto:sage [2008/12/26(金) 04:09:08 ID:a7a1HFNW]
UnixはATT Bell研が作った。

669 名前:login:Penguin mailto:sage [2008/12/26(金) 10:18:31 ID:kY52Q3ra]
>>664
仕事で使ってるよ、今はLinuxさわれるだけで儲かりまくり
5年前の話だが、PostgreSQLのインストールができるだけで
単価80万とかワロタ(今は95万)

670 名前:login:Penguin mailto:sage [2008/12/27(土) 02:56:43 ID:ewWZe8H3]
expect でキー同時押しは可能でしょうか?
[CTRL]+hogeや[ALT]+hogeを実現したいのですけど...。

671 名前:login:Penguin mailto:sage [2008/12/27(土) 08:29:19 ID:XT/dVHCc]
man expect

672 名前:login:Penguin [2008/12/27(土) 12:19:24 ID:hR8dpZ4/]
他人が書いたシェルスクリプトを読んでいて、ふと思ったのですが

if [ -d "$LOG_DIR" ] と if [ -d $LOG_DIR ] って何が違うのでしょうか?

変数を" "で括っても括らなくても同じだと思うのですが。。。

673 名前:login:Penguin mailto:sage [2008/12/27(土) 12:25:49 ID:x/3/NyyP]
日本語のディレクトリ名とかって平気でスペース含んでるからじゃない?

674 名前:login:Penguin [2008/12/27(土) 12:36:55 ID:hR8dpZ4/]
>>673
ああ、まあ確実にしたい気持ちは分かる。



675 名前:login:Penguin mailto:sage [2008/12/27(土) 13:00:38 ID:s0UxMQU1]
バグを気の持ちようで片付けられても困る

676 名前:login:Penguin mailto:sage [2008/12/27(土) 13:19:36 ID:tvB/ANXD]
別に日本語じゃなくてもディレクトリ名に空白を含められるよ。

677 名前:login:Penguin [2008/12/27(土) 13:23:17 ID:hR8dpZ4/]
そういえばそうだなぁ。。

よくわかりました。ありがとう。

678 名前:670 mailto:sage [2008/12/27(土) 15:32:52 ID:ewWZe8H3]
man expect 見ましたがワカリマセン...
例題で set CTRLZ \032 とありますがコード一覧が
ワカラナイ...\032 がなぜ CTRL+Z となるのでしょう?
ALTキーの例は見当たらず。


679 名前:login:Penguin mailto:sage [2008/12/27(土) 15:42:23 ID:qzL0GYCL]
expectではできない。そもそもtty上では無理。


680 名前:login:Penguin mailto:sage [2008/12/27(土) 20:55:00 ID:uu+uz6sg]
>>672
LOG_DIRが未定義の場合引数なしとみなされて落ちる。

681 名前:login:Penguin mailto:sage [2008/12/28(日) 01:21:50 ID:c0vKPynm]
CentOSを入れて勉強してるのですが、
既存の設定ファイルなどのシェルスクリプトを見ると
$1などのパラメータを変数に入れるときに、
arg1="$1"
のように書かかれてるのですが、
arg1=$1
としない理由はあるんでしょうか?
javaしか知らない自分にとっては後者の方が自然です。

682 名前:login:Penguin mailto:sage [2008/12/28(日) 01:27:58 ID:k8TtxyBW]
>>681
>>672 からの話とは別?

683 名前:login:Penguin mailto:sage [2008/12/28(日) 01:29:05 ID:k8TtxyBW]
>>681
> javaしか知らない自分にとっては後者の方が自然です。
シェルスクリプトに他の言語の常識は期待しない方がいい。

684 名前:login:Penguin mailto:sage [2008/12/28(日) 01:48:43 ID:V8VzuV0w]
>>682
違うだろ。



685 名前:login:Penguin mailto:sage [2008/12/28(日) 01:57:05 ID:HifkpJa1]
引数なんてファイルパスばっかだもんなぁ

686 名前:login:Penguin mailto:sage [2008/12/28(日) 02:48:38 ID:gH9u5ZJh]
>>681
その場合だとほとんど変らないけど、
意図がある場合を除いて、"で括っておくのが無難です。

$ aaa='This is a test'
$ bbb=TEST
$ ccc=XXX
$ for i in $aaa $bbb $ccc; do echo $i; done
This
is
a
test
TEST
XXX
$ for i in "$aaa" "$bbb" "$ccc"; do echo $i; done
This is a test
TEST
XXX


687 名前:login:Penguin mailto:sage [2008/12/28(日) 02:55:48 ID:HifkpJa1]
>>681
javaじゃなくてC経験者なら
「変数は実行時にソース内で#defineみたく展開されるよ」とかで通るのだが

688 名前:681 mailto:sage [2008/12/28(日) 03:10:34 ID:c0vKPynm]
>>682
直前に似た質問があったんですね。
ちゃんと見てませんでした。すいません。

>>686
丁寧にありがとうございます。
おおなるほど・・・$aaa としてもそれを一つの変数として見てくれるわけではなく
単純に文字列を置き換えてるだけなんですね。
そういえばシェルスクリプトの変数は文字列型オンリーでしたね。この仕様も納得できた!
勉強になりました。

689 名前:681 mailto:sage [2008/12/28(日) 03:14:08 ID:c0vKPynm]
>>687
気になったのでさっきCを調べてみました。
マクロってやつですよね?確かに同じですね。
Javaから入ると変な先入観がつくのかな。

690 名前:login:Penguin mailto:sage [2008/12/28(日) 06:27:34 ID:uuzQR67D]
${val}みたいになってるやつはどうなの?

691 名前:login:Penguin mailto:sage [2008/12/28(日) 09:25:26 ID:AoJUSROw]
どうもこうも、中括弧とクォートでは役割が違う。

692 名前:login:Penguin mailto:sage [2008/12/28(日) 10:04:59 ID:V8VzuV0w]
>>691
その役割までを語って初めて説明だと思うが。

693 名前:login:Penguin mailto:sage [2008/12/28(日) 10:22:27 ID:UElCX9mx]
1から10まで説明する義務はないし・・・
まあググっとけ

694 名前:login:Penguin mailto:sage [2008/12/28(日) 10:49:16 ID:gH9u5ZJh]
>>690
{}の中に特殊文字があってindirect expantsionしなければおんなじ。



695 名前:login:Penguin mailto:sage [2008/12/28(日) 11:32:10 ID:qx39pT0/]
>>690
hoge=HOGE
echo "$hoge"
echo "$hogehoge"
echo "${hoge}hoge"


696 名前:login:Penguin mailto:sage [2008/12/28(日) 13:52:19 ID:X7MLwHJR]
>その役割までを語って初めて説明だと思うが。
なんでやねん…
クォーティングの話題に突如としてトンチンカンな話が降って来たら、「それとこれとは話が別」と話題を戻すだけでいい。
あなたはアサッテな割り込みに一々説明を付してるの?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef