下面兩種寫法都可以用來判斷變數是否為空值
================ function 1 ==============
#!/bin/sh
if [ ! -n "$foo" ]; then
echo "IS NULL"
else
echo "NOT NULL"
fi
======================================
================ function 2 ==============
#!/bin/sh
if [ ! "$foo" ]; then
echo "IS NULL"
else
echo "NOT NULL"
fi
======================================
2017年11月24日 星期五
【shell script】印出檔案中的每一行內容
下面要實作一個範例,這個Script可以取得檔案每一行的內容,並且搭配其他指令來處理
目的:以檔案的內容,來批次的尋找檔案是否存在
OS:Ubuntu
假設5566.txt 內容:
usr/lib/liba.so
usr/lib/libc.so
usr/lib/libd.so
usr/lib/libe.so
此Script的動作有幾個步驟:
1. 一行一行讀取5566.txt的內容,把每行的內容放到$line當中
2. 搭配awk來處理$line,只取得整行路徑最後的檔案名
3. 會在當下目路去尋找,是否有liba.so、libc.so、libd.so、libe.so這四個library,有的話則會印出來
================= parseTXT.sh ===============
#!/bin/sh
filename="5566.txt"
exec < $filename
while read line
do
#echo $line
lib=$(echo $line | awk -F'/' '{print $NF}') #get last one
#awk '{print $(NF-1)}' #get last two
result=$(find . -name $lib)
#如果尋找的結果非空,則印出來
if [ -n "$result" ]; then
echo $result
fi
count=$(($count+1))
done
echo "count=$count"
================================================
目的:以檔案的內容,來批次的尋找檔案是否存在
OS:Ubuntu
假設5566.txt 內容:
usr/lib/liba.so
usr/lib/libc.so
usr/lib/libd.so
usr/lib/libe.so
此Script的動作有幾個步驟:
1. 一行一行讀取5566.txt的內容,把每行的內容放到$line當中
2. 搭配awk來處理$line,只取得整行路徑最後的檔案名
3. 會在當下目路去尋找,是否有liba.so、libc.so、libd.so、libe.so這四個library,有的話則會印出來
================= parseTXT.sh ===============
#!/bin/sh
filename="5566.txt"
exec < $filename
while read line
do
#echo $line
lib=$(echo $line | awk -F'/' '{print $NF}') #get last one
#awk '{print $(NF-1)}' #get last two
result=$(find . -name $lib)
#如果尋找的結果非空,則印出來
if [ -n "$result" ]; then
echo $result
fi
count=$(($count+1))
done
echo "count=$count"
================================================
訂閱:
文章 (Atom)