[英]Reading and comparing column in .txt file in bash
5742060626,Pimpan Tantivaravong女士,女
5742065826,Kaotip Tanti女士,女
-我創建了一個接口腳本以在此文件中添加列表首先,我必須將輸入ID與列表中的退出ID進行比較。 我使用cut命令僅讀取.txt文件的第一列。 但是,當我嘗試進行比較時遇到了一個問題。
這是我的代碼。
--
!/bin/bash
#
datafile='student-2603385.txt'
while read p;
do
if [ "$id" == (echo $p | cut -d, -f1) ]
then
echo 'duplicate id'
fi
done <$datafile
--
誰能建議我,我該怎么辦? 謝謝
您的腳本有許多引用錯誤,當變量包含文件名時總是引用變量擴展,如果您希望避免通過shell進行單詞拆分和路徑名擴展,也應使用引號。
撇開它,在if [ "$id" == (echo $p | cut -d, -f1) ]
:
您需要命令替代, $()
在echo ... | cut ...
周圍echo ... | cut ...
echo ... | cut ...
,而不是subshell ()
您還需要在$()
周圍$()
引號,以防止單詞分裂(和路徑名擴展)
==
是bash-ism,不是POSIX定義的,只是提醒
嘗試使用[[
盡可能多地作為shell關鍵字[[
處理分詞
因此,使用test
( [
):
if [ "$id" == "$(echo "$p" | cut -d, -f1)" ]
更好:
if [[ $id == $(echo "$p" | cut -d, -f1) ]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.