无法通过/ bin / *

时间:2017-10-02 21:43:38

标签: bash shell

我正在尝试使用简单的shell脚本传递一个带有目录列表的数组。但是当我将$1传递给程序时,第一个参数/bin/bash转向*(/ bin中的第一个目录)。我的代码在下面供参考。我不能在参数中传递#!/bin/bash declare -a d placeholder=0 for filename in ${1}; do d[${placeholder}]=${filename:5} ((placeholder++)) done echo "$1" 吗?

/bin/bash

回声的结果是ItemStack yourInkSack = new ItemStack(Material.INK_SACK, 1, (short) 4);

谢谢!

2 个答案:

答案 0 :(得分:1)

一个glob被shell替换为一个匹配的名字列表。

利用这一点,并阅读参数列表中传递的名称列表:

#!/bin/bash

declare -a d
placeholder=0

for filename in "$@"; do               # or just ''for filename; do''
     d[${placeholder}]=${filename:5}
     ((placeholder++))
done

# print your array
declare -p d

# or, to print your array's contents one entry per line:
printf '%s\n' "${d[@]}"

...或者,更容易:

#!/bin/bash
d=( "${@##*/}" )           # assuming the :5 is intended to leave only filenames
declare -p d

答案 1 :(得分:0)

在调用脚本之前,shell正在扩展

*。尝试拨打yourscript '/bin/*'(请注意引号)。