你的代碼有很多問題。我會按照重要性或多或少的方式去處理它們。
- 你錯過
then
:
if [ $(cat $i | head -n 1 | grep -c "6" >= 1) ] ; then
- 不解析
ls
,水珠就足夠了:
for i in /tmp/files/date*; do
- 的
>=
應該是子shell之外:
if [ $(cat $i | head -n 1 | grep -c "6") >= 1 ] ; then
- 的
>=
應該是-ge
來比較數字:
if [ $(cat $i | head -n 1 | grep -c "6") -ge 1 ] ; then
- 報價
"$i"
和子shell,你並不需要引用6:
if [ "$(cat "$i" | head -n 1 | grep -c 6)" -ge 1 ] ; then
- 的
grep
返回值可以用來控制,因爲你想讓它安靜if
(切換-c
到-q
和你不需要計數:
if cat "$i" | head -n 1 | grep -q 6 ; then
- 你不需要貓在這裏:
if head -n 1 "$i" | grep -q 6 ; then
所以:
for i in /tmp/files/date*; do
if head -n 1 "$i" | grep -q 6 ; then
echo $i
fi
done
取決於你要與列表中做什麼,你可能需要去了解它以不同的方式(find
,可能)。
不解析'ls':HTTP://mywiki.wooledge。org/ParsingLs – 2012-04-10 17:36:44
不要使用'ls',glob本身就足夠了(並且不會像'ls'那樣容易出現空白/醜陋的字符問題)。 – Kevin 2012-04-10 17:37:00