在将参数传递给自制脚本时,我注意到它们会由文件系统评估,如果该机器,否则,只是作为参数传递。这不是我想要的行为
给出该代码
#!/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 数组相同
但是,如果任何参数具有通配符,并且与文件匹配,则会使用文件名进行解析
让我们看一个例子:
让我们观察第二个参数
file2*
说明中如何
array_arg+=( "$1" )
将两个文件名添加到数组中,而不是 $1 的值
当最后一个参数时,不要改变/解决/无论什么......
不用说,我需要传递给脚本的参数,而不是评估
最佳答案
./test.sh "file1" "file2" "file3"
这会运行良好。
关于linux - 避免将脚本参数作为文件进行评估 [BASH、LINUX],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55063927/