2017年11月24日 星期五

【shell script】如何判斷變數為空

下面兩種寫法都可以用來判斷變數是否為空值

================ 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
======================================

【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"
================================================