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

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

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

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

Linux

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

Q&A

2回答

989閲覧

シェルスクリプトでまとめて実行したい

thankyoulove39

総合スコア7

シェルスクリプト

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

Linux

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

0グッド

2クリップ

投稿2018/11/13 03:56

シェルスクリプトにおいて現在for文により一つ一つ実行して書き込みしているのですが、
これをi=1~i=varまでまとめて実行したいです。```Linux
コード

for

1do 2 echo "do"${i} 3 RDM_QIM/embed page/page$i.txt $seed $step > apage/apage$i.txt

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

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

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

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

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

y_waiwai

2018/11/13 03:59

してください、としかいいようはないですが、しつもんはなんでしょうか。
thankyoulove39

2018/11/13 04:04

I=1からI=VARまで一回ずつ実行するのではなく、i=1からI=VARまでまとめて実行するにはどう記述したらよいのでしょうか。
guest

回答2

0

気分的なもんですが

RDM_QIM/embed page/page$i.txt $seed $step > apage/apage$i.txt

echo "RDM_QIM/embed page/page$i.txt $seed $step > apage/apage$i.txt" | at -t 201811132200

とかにしてみるのはどうでしょう。

投稿2018/11/13 12:56

takasima20

総合スコア7458

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

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

0

要するに「並列実行がしたい」ということですよね?

「完璧に同時実行」ではなく「1回目の実行終了を待たずに2回目の実行を始めたい」ということであれば、実行コマンドの末尾に & を付ければ実現可能です。

for (( i=1 ; $i <= ${VAR} ; i=$((i+1)) )) do # echo "do"${i} echo "do"${i} & # RDM_QIM/embed page/page$i.txt $seed $step > apage/apage$i.txt RDM_QIM/embed page/page$i.txt $seed $step > apage/apage$i.txt &

並列実行については、こちらの記事が詳しいかと思いますので、よろしければご覧ください。
https://qiita.com/nyango/items/7b6b719f248b2ee8d379

投稿2018/11/13 04:36

nak

総合スコア696

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

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

thankyoulove39

2018/11/13 05:43

回答ありがとうございます。 完璧に同時実行をしたいのですがその場合ですとどのように記述してあげたら良いのでしょうか。 ご回答よろしくお願いします。
ahidaka

2018/11/13 07:40

例えマルチCPUでOS無しの環境で、アセンブラで記述しても「完璧に同時実行」させるのは至難の業なのですが、そのことについてはどう考えますか?つまりシェルスクリプトで「完璧に同時実行」させるのはほぼ不可能なので、どの辺で妥協できるのかが分からないと回答できません。
nak

2018/11/13 12:09

その処理は、コンマ何秒の違いも許容できない処理ですか? もしその程度は許容できるのであれば、最初にご紹介したやり方で問題ないと思います。 ひとつめのシェル実行→(終了をまたずに)すぐ次のループに入る→ふたつめのシェル実行→(以下略) となるので。 ※ループにかかる時間はコンマ何秒の世界です。 仮に、各シェルの実行時間が5分かかるとして、3つループさせる場合、修正前のコードですと全部終わるまでに15分と少し(ループさせる処理分)かかりますが、修正後のコードなら5分と少し(ループさせる処理)で終わります。 完璧な同時実行は、ahidakaさんも仰っているとおり、シェルでは難しいように思います。 紹介させていただいたリンク先で書かれている「GNU Parallel」が、もしかしたら少しはニーズに近い可能性もあります(使ったことはありませんが)。 ただ、おそらく、そちらも内部実装は「書かれた処理を(待ち時間無しで)順番に実行する」ようになっているのではないかという気が……。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問