这是我的代码:
#!/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/