部分文件名作为Shell脚本输入

时间:2019-05-21 07:19:27

标签: bash shell

我正在尝试创建一个shell脚本,该脚本以部分文件名作为输入,然后对具有匹配名称的文件进行操作。例如,我有三个文件sample1.txt,sample2.txt and sample3.txt,这是我的脚本

#!bin/bash

VALUE=$1
VALUE2=$2
FILE_NAME=$3

echo $FILE_NAME

然后用此命令运行它

sh myscript.sh arg1 arg2 sample*

但是我得到这个作为输出

sample3.txt (sample2.txt)

但是我想要的是

sample1.txt
sample2.txt
sample3.txt

我该怎么办?

1 个答案:

答案 0 :(得分:1)

sample*

get扩展为(如果文件存在,不再有该名称的文件,等等):

sample1.txt sample2.txt sample3.txt

所以当您写:

sh myscript.sh arg1 arg2 sample*

您真正写的,脚本看到的是:

sh myscript.sh arg1 arg2 sample1.txt sample2.txt sample3.txt

您的脚本get的5个参数,而不是3个

然后您可以:

#!bin/bash

VALUE=$1
VALUE2=$2

# shift the arguments to jump over the first two 
shift 2

# print all the rest of arguments
echo "$@"

# ex. read the arguments into an array
FILE_NAME=("$@")
echo "${FILE_NAME[@]}"

jdoodle上的实时示例。