我一直在谷歌上看了很长一段时间,找不到任何符合我需要/想做的东西.
我的目标是编写一个带有两个参数的脚本.它将搜索第一个参数(这是一个列表)并检测第二个参数是否已经在其中.例如:
list = / bin / foo:/ bin / random:random
添加到列表:/ bin / foobar
调用脚本将产生/ bin / foo:/ bin / random:random:/ bin / foobar的结果.
如果要添加到列表中的部件已经在列表中,那么原件的任何内容都不会更改.
我有一切工作,直到我想要修改我传递的参数.
- ...
- if [ $RUN = 1 ]; then
- echo $1
- else
- $1="$NEWLIST"
- fi
- exit 0
然而,这产生了错误.它说找不到命令,并给我一个$1 =“$NEWLIST”的行号.我在这做错了什么?如何修改$1?谢谢!
编辑:
- $PATH=/opt/bin:$PATH
- $./scrip.sh PATH /user/opt/bin
- $/opt/bin:/user/opt/bin
这是我想要的脚本结果.
adymitruk已经说过了,但你为什么要分配一个参数.这不是诀窍吗?
- if `echo :$1: | grep ":$2:" 1>/dev/null 2>&1`
- then
- echo $1
- else
- echo $1:$2
- fi
也许这个:
- list="1:2:3:4"
- list=`./script $list 5`;echo $list
大编辑:
使用此脚本(例如,名为listadd):
- if ! `echo :${!1}: | grep ":$2:" 1>/dev/null 2>&1`
- then
- export $1=${!1}:$2
- fi
并从你的shell中获取它.结果如下(我希望这是wsa的意图):
- lorenzo@enzo:~$list=1:2:3:4
- lorenzo@enzo:~$source listadd list 3
- lorenzo@enzo:~$echo $list
- 1:2:3:4
- lorenzo@enzo:~$source listadd list 5
- lorenzo@enzo:~$echo $list
- 1:2:3:4:5
- lorenzo@enzo:~$list2=a:b:c
- lorenzo@enzo:~$source listadd list2 a
- lorenzo@enzo:~$echo $list2
- a:b:c
- lorenzo@enzo:~$source listadd list2 d
- lorenzo@enzo:~$echo $list2
- a:b:c:d