linux - 避免将脚本参数作为文件进行评估 [BASH、LINUX]

标签 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 的值

当最后一个参数时,不要改变/解决/无论什么......

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

最佳答案

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

这会运行良好。

关于linux - 避免将脚本参数作为文件进行评估 [BASH、LINUX],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55063927/

相关文章:

linux - 如何修复 bash az 命令未找到

json - Linux grep命令从json中查找key的值

c - 如何使用libudev获取USB端口的端口信息?

linux - Linux下,调度任务到时分秒精度

linux - 如何在 Linux 中使用终端命令将文件参数传递给我的 bash 脚本?

string - 按换行符拆分 bash 字符串

linux - 为什么我的 Shell 字符串中的输出不正确?

linux - 通过 ssh 连接并重试的 Shell 脚本

linux - ec2 共享 www 文件夹

c - Facebook拼图提交失败