避免将脚本参数评估为文件[BASH,LINUX]

时间:2019-03-08 13:11:08

标签: linux bash shell ubuntu

作为自变量传递给自制脚本的过程,我注意到文件系统对该变量进行了评估,否则就作为参数传递了。那不是我想要的行为

提供该代码

#!/bin/bash

declare -a array_arg 

#build the array of arguments
while test -n "$1"; do  array_arg+=( "$1" ); shift
done

#test there is some arguments
if test ${#array_arg[@]} -eq 0; then echo  "ERROR no arguments"
fi

#running resume
echo "number of elements:: ${#array_arg[@]}"

for ((i = 0; i < ${#array_arg[@]}; i++   )); do echo "$i>> ${array_arg[i]}"
done

我希望传递相同的参数列表,我将进入array_arg数组

但是,如果任何参数具有通配符,并且与文件匹配,它将使用文件名来解析

让我们看一个例子:

enter image description here

让我们观察一下,第二个参数

  

file2 *

说明中的方法

array_arg+=( "$1" )

向数组添加两个文件名,而不是$ 1的值

最后一个参数时,不要更改/解决/任何...

不用说,我需要传递给脚本的参数,而不是经过评估的

1 个答案:

答案 0 :(得分:0)

./test.sh "file1" "file2" "file3"

这会很好的运行。