09/04/01 17:49:58
>>378
まぁあくまで「わかるかも」だからな。
382:370
09/04/01 18:17:08
遅くなりましたが解決しました。
原因はシェルスクリプト自体の権限が、FTPで接続するユーザート違かったからだと思います。
SSHでログインしているサーバーのユーザーは「root」の他に「admin」「information」などのユーザー名を使用していたのですが、FTPで接続する先のユーザーは全く違う名前でした。
なので、FTPのユーザー名と同じユーザーを作成し、そのユーザー権限でシェルスクリプトを実行したら、無事成功しました。
けど、FTPのユーザー名と、実行するユーザー名が異なると権限のエラーがでるのですね。 不思議です。
皆様ありがとうございました。
383:名無しさん@お腹いっぱい。
09/04/01 18:24:36
そんなはずないと思うんだがなぁ。
384:名無しさん@お腹いっぱい。
09/04/01 18:25:24
Cygwin(bash)を使っています。
for文の中で文字列の代入をさせようとするとエラーが返されます
#!/bin/sh
for i in *
do
$output = $i
(・・処理・・)
done
どうしたらfor文の中で文字列の代入をさせることができるでしょうか?
385:名無しさん@お腹いっぱい。
09/04/01 18:26:18
for の外なら
$output = $i
はできてるのか?
386:名無しさん@お腹いっぱい。
09/04/01 18:36:15
>>385
for文の外でも
=: command not found
と言われてエラーを返されました(´・ω・`)
387:名無しさん@お腹いっぱい。
09/04/01 18:38:48
えっと、この空気的には
output=$i
ってマジレスしちゃダメなんだろなぁ
388:名無しさん@お腹いっぱい。
09/04/01 18:39:51
>>386
他の言語の常識持ち込まずに
ちゃんと構文調べてから書いた方がいいよ。
>>387
別にいいんじゃね。
389:名無しさん@お腹いっぱい。
09/04/01 18:46:55
>>387
それでも
output: command not found
とエラーが返されましたorz・・・
390:名無しさん@お腹いっぱい。
09/04/01 18:49:06
cshユーザーに隙はなかった
391:名無しさん@お腹いっぱい。
09/04/01 18:49:20
>>389
>>387をそのまま書く。
空白入れちゃだめ。
392:名無しさん@お腹いっぱい。
09/04/01 18:59:18
>>391
できました。ありがとうございました(;´∀`)
393:名無しさん@お腹いっぱい。
09/04/01 21:22:43
本日の祭り会場はこちら
【ネット】朝日新聞編集局員(49)、2ちゃんで荒らし行為&差別を助長する書き込み→朝日新聞からの書き込み規制され…★64
スレリンク(newsplus板)
※ソース(3月31日付けasahi.com)
URLリンク(www.asahi.com)
394:名無しさん@お腹いっぱい。
09/04/02 02:25:42
どこかの鯖のシェルスクリプト見るとパスワード書いてあったりするのかwww
なんだかなあ。
395:名無しさん@お腹いっぱい。
09/04/02 08:47:42
findでひっかけたファイル一覧をforで回したいんですけど、引っかけたファイルにスペースが入っている場合、単語単位でforで回ってしまいます。
この場合って、事前にIFSをイジるしか解決策は無いのでしょうか?
findの-print0とかして、forのデリミタをNULLにしたりとかは出来ないのでしょうか?
396:名無しさん@お腹いっぱい。
09/04/02 08:51:34
>>395
find . -exec sh -c 'for arg in "$@"; do echo "$arg"; done' dummy {} +
397:名無しさん@お腹いっぱい。
09/04/02 09:09:17
>>396
ありがとうございます。
出来ました。
ただ何をやっているのか、理解していないと思われる部分があるので質問させて下さい。
dummyは何をやってるのでしょうか?
僕の理解としては、shの引数としてfindの1結果を渡しているんだと思うんですけど、shにとっての第1引数はdummyなので、
dummy ファイル名
が$@に入ってると思います。
ただ、
$ sh -c 'echo "$@"' arg1 arg2
とすると、arg22がechoされるので、dummyが必要なのは現象からわかるのですが、理由がわかりません。
それと、最後の+はどういう意味でしょう。findのmanでは\;で-execは終われと書いてあるように読めるのですが。
以上、すいませんが、解説お願い出来たらお願いします。
398:名無しさん@お腹いっぱい。
09/04/02 10:55:42
どっちもマニュアル嫁だな
sh(1)より:
-c string If the -c option is present, then commands are read from string. If there are
arguments after the string, they are assigned to the positional parameters,
starting with $0.
find(1)より:
-exec command {} +
This variant of the -exec action runs the specified command on the selected files,
but the command line is built by appending each selected file name at the end; the
total number of invocations of the command will be much less than the number of
matched files. The command line is built in much the same way that xargs builds
its command lines. Only one instance of `{}' is allowed within the command. The
command is executed in the starting directory.
399:名無しさん@お腹いっぱい。
09/04/02 11:33:43
forで回したいという要求に合ってない気がするが
空気読んで黙っておくよ
400:名無しさん@お腹いっぱい。
09/04/02 11:47:12
ファイル名にシングルクォートが含まれていないと仮定するなら、
for files in `find . -printf "'%p' "`
do
echo "$files"
done
findに、「シェルで再利用可能なクォートを施した状態でprint」という
機能がない以上、完全な対応は無理。なので、>>396 のように sh -c を -exec する
方法しかない。
401:366
09/04/04 15:56:31 BE:526035762-2BP(0)
お礼遅れてすいません!ありがとうございましたm(_ _)m