前提・実現したいこと
vsbox、centOS8でシェルファイルを作っています。
homeディレクトリ中の現在ps-ef+日付という5つのファイルについて一つずつ中身を参照し、行数をそれぞれ比べて変数に入れていき、行数が大きいファイルをtxtファイルに出力する、行数が一番多いファイルが二つあればファイルの古い順で比べて古いファイルを出力すする、という処理で悩んでいます。
発生している問題・エラーメッセージ
シェルスクリプトの中身
#!/bin/bash
LIST=ls -tr ps-ef*.txt | sort
ls $LIST| while read line
do
hensu=wc -l $line |awk '{print $1}'
hensu2=wc -l $line |awk '{print $2}'
echo $hensu
echo $hensu2
hensu_set=$hensu
if [[ $hensu -gt $hensu_set ]]; then
$hensu_set=$hensu
fi
done
echo $hensu_set
~
エラーメッセージ
[user@localhost ~]bash -x ps-ef_014.sh
++ sort
++ ls -tr ps-ef_20210708140611.txt ps-ef_20210708140612.txt ps-ef_20210708140615.txt ps-ef_20210709115333.txt ps-ef_20210709160730.txt
- LIST='ps-ef_20210708140611.txt
ps-ef_20210708140612.txt
ps-ef_20210708140615.txt
ps-ef_20210709115333.txt
ps-ef_20210709160730.txt'
- ls ps-ef_20210708140611.txt ps-ef_20210708140612.txt ps-ef_20210708140615.txt ps-ef_20210709115333.txt ps-ef_20210709160730.txt
- read line
++ wc -l ps-ef_20210708140611.txt
++ awk '{print $1}'
- hensu=104
++ wc -l ps-ef_20210708140611.txt
++ awk '{print $2}'
- hensu2=ps-ef_20210708140611.txt
- echo 104
104
- echo ps-ef_20210708140611.txt
ps-ef_20210708140611.txt
- hensu_set=104
- [[ 104 -gt 104 ]]
- read line
++ wc -l ps-ef_20210708140612.txt
++ awk '{print $1}'
- hensu=102
++ awk '{print $2}'
++ wc -l ps-ef_20210708140612.txt
- hensu2=ps-ef_20210708140612.txt
- echo 102
102
- echo ps-ef_20210708140612.txt
ps-ef_20210708140612.txt
- hensu_set=102
- [[ 102 -gt 102 ]]
- read line
++ awk '{print $1}'
++ wc -l ps-ef_20210708140615.txt
- hensu=101
++ awk '{print $2}'
++ wc -l ps-ef_20210708140615.txt
- hensu2=ps-ef_20210708140615.txt
- echo 101
101
- echo ps-ef_20210708140615.txt
ps-ef_20210708140615.txt
- hensu_set=101
- [[ 101 -gt 101 ]]
- read line
++ awk '{print $1}'
++ wc -l ps-ef_20210709115333.txt
- hensu=101
++ awk '{print $2}'
++ wc -l ps-ef_20210709115333.txt
- hensu2=ps-ef_20210709115333.txt
- echo 101
101
- echo ps-ef_20210709115333.txt
ps-ef_20210709115333.txt
- hensu_set=101
- [[ 101 -gt 101 ]]
- read line
++ awk '{print $1}'
++ wc -l ps-ef_20210709160730.txt
- hensu=100
++ awk '{print $2}'
++ wc -l ps-ef_20210709160730.txt
- hensu2=ps-ef_20210709160730.txt
- echo 100
100
- echo ps-ef_20210709160730.txt
ps-ef_20210709160730.txt
- hensu_set=100
- [[ 100 -gt 100 ]]
- read line
- echo
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/12 01:59