現在、シェルスクリプトについて学習している者です。
コマンドと、そのコマンドを実行した際にログを吐き出すログファイル名を格納したテキストファイルを用意し、
それをwhile read lineで読み込んで処理する、といった内容の練習をしております。
例を挙げると、
ls -l,ls.log
pwd,pwd.log
history,his.log
といった3行のテキストファイル【test.txt】を用意し、
,を区切り文字にして前のコマンドを後ろのログファイルに吐き出すといった具合です。
現在思考しているコードとしては、
text1=$(awk -F ',' '{print $1}' /root/test.txt)
text2=$(awk -F ',' '{print $2}' /root/test.txt)
while read line
do
$text1 > $text2
done < /root/test.txt
になっています。
こちらだと、曖昧なリダイレクトであるとエラーを吐いてしまいます。
test.txtが1行のみの場合はこのコードで処理してくれているため、3行になったら何故エラーとなるのか、疑問点です。
↓
ls -l,ls.log
というテキストファイル【test2.txt】を用意し、
text1=$(awk -F ',' '{print $1}' /root/test2.txt)
text2=$(awk -F ',' '{print $2}' /root/test2.txt)
while read line
do
$text1 > $text2
done < /root/test2.txt
を実行した際は想定通り動く、ということです……
ご教授いただけますと幸いです。
よろしくお願いいたします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/17 09:58 編集
2022/03/17 12:15