标题几乎说明了一切。现在我接受一系列单独的行,并对每行进行单独的搜索。现在我想将其归结为一行,使用制表符分隔字段,将字段放入数组中,然后将数组作为单独的元素进行处理以进行单独的搜索。完全不熟悉在 bash 中处理数组:
#!/bin/bash
while :
do
HOLD=""
> ~/tmp 1
while :
do
read -p "Find What: " WHAT
if [[ $WHAT = "" ]]
then
break
fi
HOLD=$HOLD" "$WHAT
echo $HOLD
grep -riHn "$WHAT" --include="* chm" --include="* htm*" --include="* pb*" --include="* txt" >> ~/tmp 1
done
if [[ $HOLD = "" ]]
then
break
fi
sort -n ~/tmp 1 > ~/tmp 2;awk 'seen[$0]++ == 1' ~/tmp 2 |sed '/\/Trash\//d' > ~/tmp 1;cat ~/tmp 1|less
答案1
您可以使用
IFS=$'\t' read -p "Find What (TAB Separated): " -a WHAT
for QUERY in "${WHAT[@]}"
do
echo $QUERY
done
读取输入。输入字段分隔符 (IFS) 设置为制表符,输入存储在数组 WHAT 中。${WHAT[@]} 保存数组的所有元素。使用引号是为了避免 shell 重新解析字段。