【发布时间】:2015-07-31 01:58:14
【问题描述】:
我正在编写一个清理用户输入的 bash 验证函数。
这个想法是,如果脚本有 3 个参数,那么这些参数只能是字母数字值。但是参数可以是用双引号括起来的多个单词,如下所示:
myfunction arg1 arg2 "this is arg3"
所以我基本上是想去掉不是字母数字或空格字符的所有内容。
目前,我有:
validateEntry() {
string=$1
clean=${string//[^a-zA-Z0-9\s]/}
}
但它似乎不起作用。在myfunction arg1 arg2 "this is arg3" 中,is arg3 正在被剥离。
而我使用这个函数的方式是在脚本中,像这样:
name=$(validateEntry $1)
我需要这方面的帮助。
编辑:
我们的想法是在一个脚本中使用validateEntry 函数,例如,可以接受 3 个参数,如下所示:
if [[ "$#" -eq 3 ]]; then
arg1=$(validateEntry $1)
arg2=$(validateEntry $2)
arg3=$(validateEntry $3)
echo "${arg1}, ${arg2}, ${arg3}."
fi
但是如果我的脚本的第三个参数是this is arg3,$arg3 会减少到this,即使当我直接调用我的函数时,使用相同的三个参数,第三个参数是this is arg3
【问题讨论】: