【发布时间】:2018-04-26 01:13:09
【问题描述】:
我想在字符串"%2C+" 上加入一个字符串数组。我的 shell 脚本 launch 看起来像这样。
#!/bin/bash
function join_by { local d=$1; shift; echo -n "$1"; shift; printf "%s" "${@/#/$d}"; }
selectQuery=$(join_by "%2C+" $1)
echo selectQuery
但是当我运行./download-data $("state_code" "county_code") 时,我在终端中收到此错误:bash: state_code: command not found。
我需要将参数作为数组传递,因为我计划稍后传递更多数组。类似./download-data $("state_code" "county_code") $("more" "string")。
【问题讨论】:
-
bash中没有数组字面量之类的东西;x=(a b)是赋值语句的一种特殊形式。$(...)是一个命令替换。 -
shell 中也没有数组值。具有数组属性集的名称允许模拟传统数组的某些方面的语法,但任何扩展仍然只产生一个或多个不同的单词,而不是包含所有数组元素的一等值。
-
@Username :由于数组不是 bash 中的“一等公民”,因此您不能将它们传递给 bash 函数。您可以将保存数组的变量的 name 传递给函数,然后使用例如
eval,但这很难看。对我来说,这就是我考虑用更适合您的应用程序的编程语言替换 bash 的地方。