当前位置: 首页 > 面试题库 >

bash-用引号将所有数组元素或参数括起来

邵献
2023-03-14
问题内容

我想在bash中编写一个将参数转发到cp命令的函数。例如:输入

<function> "path/with whitespace/file1" "path/with whitespace/file2" "target path"

我希望它实际执行:

cp "path/with whitespace/file1" "path/with whitespace/file2" "target path"

但是,相反,我现在正在实现:

cp path/with whitespace/file1 path/with whitespace/file2 target path

我尝试使用的方法是将所有参数存储在数组中,然后仅将cp命令与数组一起运行。像这样:

function func {
    argumentsArray=( "$@" )
    cp ${argumentsArray[@]}
}

不幸的是,它没有像我已经提到的那样传递引号,因此复制失败。


问题答案:

就像一样$@,您需要引用数组扩展。

func () {
    argumentsArray=( "$@" )
    cp "${argumentsArray[@]}"
}

但是,该数组在这里没有任何作用。您可以$@直接使用:

func () {
    cp "$@"
}


 类似资料:
  • 问题内容: 我正在制作一个bash脚本,该脚本将打印并将复杂的参数传递给另一个外部程序。 我该如何打印原始参数: 使用并删除可能引起不良结果的单引号。我的脚本不需要解析每个参数。我只需要打印/记录参数字符串,然后将其确切地传递给另一个程序。 我知道我可以使用类似的东西来避免引号, 但是我不能保证用户会这样做。 问题答案: 在将参数传递到脚本之前,引号已被删除,因此保留它们为时已晚。您可以做的是在将

  • 问题内容: 所有特定字母(例如“ A”)都需要替换为所有括号。 例如, 我想将圆括号中的所有“ A”替换为“,以使最终结果如下: 有可能仅在正则表达式中执行此操作吗? 问题答案: 对于这种情况,有一个通用的解决方法-不应存在不平衡/嵌套的括号(按原样)。您寻找在圆括号后没有匹配圆括号的: 现场演示 Python代码:

  • 问题内容: 老实说,这个问题很简单。有没有一种方法可以快速查找数组中某个元素的所有出现而无需循环遍历它?似乎所有内置方法仅返回第一次出现的索引,而不是全部返回。 拥有返回索引数组的样式方法将是很不错的。有什么想法吗? 预先感谢您的任何投入! 编辑: 感谢大家的回复!看来我应该对此更加清楚。我目前的操作方式是扩展,其外观与下面发布的一个哑光非常相似。我知道,任何执行此操作的方法都必须在内部遍历数组,

  • 问题内容: 尝试访问API时,必须像这样解析JSON数组 但是当我在做下面的代码 它返回不带方括号的json数组,如下所示 我已经花了数小时试图找出解决方法,却想不出解决方案 问题答案: 您需要将其他东西包装起来: 如果我们使用等效的PHP 5.4数组语法,这将更容易理解: 将此与JSON进行比较: 唯一要说明的是,为什么一个PHP数组保留为JSON 数组,而另两个数组转换为对象。但是文档已经这样

  • 你好,我有以下php代码: 现在,我的变量结果返回为: abc@domain.com,def@domain.com 但我需要这份申报表: 'abc@domain.com','def@domain.com'。 所以每封邮件都附在一个报价单上,问题是我找不到如何在我的代码中实现这一点, 任何想法,提前感谢

  • 我有一个类似 我试图使所有元素联合元素,但同一子数组中的元素不得复制。 这将根据第一个子数组中的元素数进行添加。我试过了,但找不到任何解决办法。有人能帮忙吗? 这是我试过的代码: 提前感谢。!