質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

934閲覧

シェルで可変の引数を配列に設定する処理が分かりません

Chip5T

総合スコア0

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/11/30 13:54

編集2021/11/30 23:33

###前提・実現したいこと

曖昧な表現になってしまいとても分かりずらく申し訳ありません。
あまりに考えつかないので質問させていただきます。
少しでもアドバイスをいただけたら幸いです。

【前提】
引数は可変です。
引数にはtest1.text test2.text〜のようにファイル名が設定されてます。
移動前ディレクトリにはファイルが複数入ってます。
例:test1.text
test2.text
test3.text

【実現したいこと】
5回ループして引数のファイルが移動前ディレクトリに存在する場合、移動後ディレクトリに移動する。
①移動前ディレクトリディレクトリにあるファイル数分ループする。
②引数が移動前ディレクトリにあれば移動後ディレクトリに移動する。
例)ファイル数が2の場合
引数1つ目のファイルが移動前ディレクトリにある場合、移動する。
引数2つ目のファイルが移動前ディレクトリにある場合、移動する。

可変の引数を配列に入れることで、ファイル名を取り出せるかなと考えたのですが、思うように作れず困っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

「5回ループ」の 5 がどこから来たものか不明ですが、引数について順次処理するなら、

sh

1cd 移動前ディレクトリ 2for file 3do if [ -f "$file" ] 4 then mv "$file" 移動先ディレクトリ 5 fi 6done

投稿2021/11/30 14:09

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chip5T

2021/11/30 22:00

otnさんコメントありがとうございます。 fileをループさせて順に移動される流れ理解できました! ありがとうございます。 引数を配列に入れるにはどう書いたらいいでしょうか? fileを順にループしてますが、まずfileに引数を設定しないといけないかなと考えました。 それとも、下記のような記載で引数全てを変数に設定で合ってますか? file=$@
otn

2021/11/30 22:16

> 引数を配列に入れるにはどう書いたらいいでしょうか? 引数を順に処理したいだけなら、配列に入れる必要は無いです。回答に書いたとおり、 for file でいいのですが、実行してみてないのでしょうか?
Chip5T

2021/11/30 23:27

引数分ループはfor fileで動きました。 ありがとうございます。 >「5回ループ」の 5 がどこから来たものか不明ですが、 ループ回数=移動前ディレクトリにあるファイル数です。 例えばとして5と記載していました。 そのため、引数分ループではなくファイル数分ループする処理を作りたいです。 ファイル数が2の時 引数1つ目を移動前ディレクトリにあるか確認して移動。 引数2つ目を移動前ディレクトリにあるか確認して移動。
otn

2021/12/01 00:35 編集

↑理解できません。 ディレクトリに a と b のファイルがあるとして、引数が x と a と b だと、bがコピーされませんが、何故そういう仕様にしたいのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問