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

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

新規登録して質問してみよう
ただいま回答率
85.50%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

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

Q&A

解決済

2回答

3618閲覧

変数にコマンドの結果を代入する

narish

総合スコア14

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

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

0グッド

0クリップ

投稿2020/05/28 23:03

以下のように変数を設定したいのですが、コマンドの文字列も代入されてしまいます

file='find ./ -maxdepth 3 -type f -name *.mp4' && for f in $file ; do echo $f ; done

結果

find ./ -maxdepth 3 -type f -name movie1.mp4 movie2.mp4 movie3.mp4 ~省略~

どうすればMP4の一覧だけ得られますか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

findコマンドの実行結果をシェル変数$fileに格納したいのであれば、findのコマンドラインオプションを包むのはシングルクォーテーション(') ではなく、バッククォーテーション(`)ではないでしょうか。また、*.mp4の指定部分でワイルドカードの展開が行われてしまうので、"でくくってください。結果として、以下のようになるはずです。

bash

1file=`find ./ -maxdepth 3 -type f -name "*.mp4"` && for f in $file ; do echo $f ; done

実行例です。

bash

1$ ls -1 *.mp4 2test1.mp4 3test2.mp4 4test3.mp4 5test4.mp4 6 7$ file=`find ./ -maxdepth 3 -type f -name "*.mp4"` && for f in $file ; do echo $f ; done 8./test1.mp4 9./test2.mp4 10./test3.mp4 11./test4.mp4 12 13$ echo $file 14./test1.mp4 ./test2.mp4 ./test3.mp4 ./test4.mp4

投稿2020/05/28 23:23

dodox86

総合スコア9183

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

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

narish

2020/05/30 01:04

ありがとうございます
guest

0

`と'が入れ替わっています。

bash

1file=`find ./ -maxdepth 3 -type f -name "*.mp4"` && for f in $file ; do echo $f ; done

上記のようにするか、以下の様にしても良いと思います。

bash

1file=$(find ./ -maxdepth 3 -type f -name "*.mp4") && for f in $file ; do echo $f ; done

$()で囲んでも、``と同じ効果が得られます。
こちらも見やすくて良いです。$($())のようにネストすることもできます。

投稿2020/05/29 00:11

ToyoshimaHi

総合スコア130

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

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

narish

2020/05/30 01:04

助かりました 別例も教えていただき、ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問