「read」コマンドを使用して、シェルスクリプトに位置引数として行を渡します。

「read」コマンドを使用して、シェルスクリプトに位置引数として行を渡します。

次のファイルは実行されますが、何もしませんが、エラーは発生しません。

while read dates; do ./avg_hrly_all_final.sh ${dates}; done < ./dates_all.csv

「dates_all.csv」には、次の形式の日付のリストがあります。

2005 01
2005 02
2005 03

私が "avg_hrly_all_final.sh"と呼ぶスクリプトは、2つの位置パラメータを渡すことによって機能します。たとえば、次のようになります。

./avg_hrly_all_final.sh 2005 01 

フォローアップ

xargs -n2 ./the_script.sh <./dates_to_pass.csv

OR

while read dates; do ./the_script.sh ${dates}; done <./dates_to_pass.csv

動作します。渡したファイルの日付が、コマンドを実行しているコンピューターで予想される「行末」タイプと同じであることを確認してください。

ベストアンサー1

これは次のとおりですxargs

printf %s\\n '#!/bin/sh' 'printf "<%s>\n" "$$" "$@"' >avg_hourly.sh
chmod +x ./avg_hourly.sh
xargs -n2 ./avg_hourly.sh <<\IN
2005 01
2005 02
2005 03
IN

xargsデフォルトは空白に分割され、-n2指定されたコマンドは引数が発生するたびに1回呼び出されます。avg_hourly.shそこに1行に1つの引数を印刷し、両端で同じ形式で区切られ、<PIDに従う小さなダミースクリプトを作成しました。>上記は次のとおりです。

<1115>
<2005>
<01>
<1116>
<2005>
<02>
<1117>
<2005>
<03>

...デモ用だけです。しかし、おそらく<./dates_all.csv私の文書の代わりに<<\INこの文書を入力として使用する必要があります。

おすすめ記事