5742060626,Ms.Pimpan Tantivaravong,女性
5742065826,Ms.Kaotip Tanti,女性
- 我创建了一个接口脚本来在此文件中添加列表 首先,我必须将输入id与列表中的exitsting 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
-
有谁能建议我,我该怎么办? 谢谢答案 0 :(得分:1)
你的脚本有很多引用错误,当变量包含文件名时总是引用变量扩展,当你想避免通过shell进行单词拆分和路径名扩展时,它也是预期的。
暂且不说,在if [ "$id" == (echo $p | cut -d, -f1) ]
:
您需要命令替换$()
echo ... | cut ...
,而不是子shell ()
您还需要$()
周围的引号以防止分词(和路径名扩展)
==
是bash-ism,不是由POSIX定义的,只是一个提醒
尝试尽可能多地使用[[
,作为shell关键字[[
处理分词
使用test
([
):
if [ "$id" == "$(echo "$p" | cut -d, -f1)" ]
更好:
if [[ $id == $(echo "$p" | cut -d, -f1) ]]