linux - 如何用shell函数制作 "dictionary"?

标签 linux bash shell unix awk

这是我的代码:

#!/bin/sh
echo "ARGUMENTS COUNT : " $#
echo "ARGUMENTS LIST  : " $*

dictionary=`awk '{ print $1 }'`

function()
{
   for i in dictionary
   do
      for j in $*
      do
         if [ $j = $i ]
         then
            ;
         else
            append
         fi
      done
   done
}

append()
{
   ls $j > dictionary1.txt
}

function

我需要使用 unix shell 函数制作“字典”。例如:我在参数中写了默认词,例如 hello。然后我的函数检查文件 dictionary1 是否该单词存在于文件中。如果不存在 - 将该词追加到文件中,如果它已经存在 - 什么都不做。

出于某种原因,我的脚本不起作用。当我启动我的脚本时,它会等待一些东西,仅此而已。

我做错了什么?我该如何解决?

最佳答案

尝试同时关注性能和正确性的实现可能如下所示:

#!/usr/bin/env bash
#              ^^^^- NOT sh; sh does not support [[ ]] or <(...)

addWords() {
  local tempFile dictFile
  tempFile=$(mktemp dictFile.XXXXXX) || return
  dictFile=$1; shift

  [[ -e "$dictFile" ]] || touch "$dictFile" || return

  sort -um "$dictFile" <(printf '%s\n' "$@" | sort -u) >"$tempFile"
  mv -- "$tempFile" "$dictFile"
}

addWords myDict beta charlie delta alpha
addWords myDict charlie zulu
cat myDict

...有一个最终的字典状态:

alpha
beta
charlie
delta
zulu

...对于每个 addWords 调用,它仅一次 重新读取输入文件(无论添加了多少个单词!),而不是每个单词添加一次.

关于linux - 如何用shell函数制作 "dictionary"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55185824/

相关文章:

python - 使用 web.py 呈现多个模板

c++ - Linux 上的互锁等效项

Bash:如何从数字中提取数字

python - Bash 脚本在 python 变量上循环

linux - 寻找命令以根据条件暂时执行命令

linux - 命令行打开一个窗口

linux - 如何实现鼠标驱动 Linux USB鼠标驱动?

shell - 找不到适合 'protocols' 的输出格式

bash - 如何编写可单元测试的 bash shell 代码?

linux - GTK 窗口运动动画?