相关疑难解决方法(0)

在bash中将数组作为参数传递

如何将数组作为参数传递给bash函数?

注意:在Stack Overflow上没有找到答案后,我自己发布了一些粗略的解决方案.它只允许传递一个数组,它是参数列表的最后一个元素.实际上,它根本没有传递数组,而是传递了它的元素列表,这些元素通过called_function()重新组合成一个数组,但它对我有用.如果有人知道更好的方式,请随时在此处添加.

arrays bash

181
推荐指数
6
解决办法
16万
查看次数

自动将所有mysql表转储到单独的文件中?

我想将每个mysql表转储到单独的文件中.手册指出了这个的语法

mysqldump [options] db_name [tbl_name ...]
Run Code Online (Sandbox Code Playgroud)

这表示您事先知道了表名.我现在可以设置知道每个表名的脚本,但是说我在路上添加一个新表并忘记更新转储脚本.然后我错过了一个或多个表的转储.

有没有办法将每个现有表自动转储到单独的文件中?或者我将不得不做一些剧本; 查询数据库,获取所有表名,并按名称转储它们.

如果我使用script-fu路由,哪些脚本语言可以访问mysql数据库?

mysqldump

64
推荐指数
6
解决办法
7万
查看次数

如何将数组作为参数传递给Bash中的函数

我们知道,在bash编程中,传递参数的方式是$1...... , $N. 但是,我发现将数组作为参数传递给接收多个参数的函数并不容易.这是一个例子:

f(){
 x=($1)
 y=$2

 for i in "${x[@]}"
 do
  echo $i
 done
 ....
}

a=("jfaldsj jflajds" "LAST")
b=NOEFLDJF

f "${a[@]}" $b
f "${a[*]}" $b
Run Code Online (Sandbox Code Playgroud)

如上所述,函数f接收两个参数:第一个分配给x一个数组,第二个分配给y.

f可以通过两种方式调用.第一种方法使用"${a[@]}"第一个参数,结果是:

jfaldsj 
jflajds
Run Code Online (Sandbox Code Playgroud)

第二种方式使用"${a[*]}"第一个参数,结果是:

jfaldsj 
jflajds 
LAST
Run Code Online (Sandbox Code Playgroud)

结果都不如我所愿.那么,有没有人知道如何正确地在函数之间传递数组?

arrays bash shell

43
推荐指数
3
解决办法
7万
查看次数

如何从命令行提供非 slurpy 数组或命名数组?

首先:raku (perl6) 很棒。克罗也是。只用了一个周末就坠入爱河。但是现在我偶然发现了一些必须非常简单的东西。

如果我在多分派 MAIN 中使用 slurpy 参数,则可以识别并完美运行:

multi MAIN( 'config', 'add', *@hostnames ) {
Run Code Online (Sandbox Code Playgroud)

但是,如果我将其设为非 slurpy 数组,则要么无法识别,要么我不知道如何从命令行提供它:

multi MAIN( 'config', 'add', @hostnames ) {
Run Code Online (Sandbox Code Playgroud)

我希望这些调用之一能够工作:

$ cli.raku config add www.example.com example.com
$ cli.raku config add www.example.com,example.com
$ cli.raku config add www.example.com, example.com
Run Code Online (Sandbox Code Playgroud)

Cro CLI 中使用了类似的构造,但是没有示例说明如何使用文档中的数组调用其中一个命令。

我也用一个数组作为命名参数尝试了这个:

my %*SUB-MAIN-OPTS = :named-anywhere;
multi MAIN( 'config', 'add', :@hostnames) {
Run Code Online (Sandbox Code Playgroud)

鉴于raku 文档中的示例,我希望它可以工作:

$ cli.raku config add --hostnames=www.example.com example.com
Run Code Online (Sandbox Code Playgroud)

但它没有,也没有逗号或空格逗号分隔的变体。在所有情况下,我都会获得使用信息。

multiple-dispatch command-line-interface named-parameters raku

12
推荐指数
1
解决办法
139
查看次数

将多个数组作为参数传递给Bash脚本?

我看了,但只看到了一个脚本中传递的数组的答案.

我想将多个数组传递给bash脚本,该脚本将它们分配为单个变量,如下所示:

./myScript.sh ${array1[@]} ${array2[@]} ${array3[@]}
Run Code Online (Sandbox Code Playgroud)

这样的:var1=array1var2=array2var3=array3

我已经尝试了多个选项,但是variableName=("$@")将所有数组组合成每个变量.我希望在我的bash脚本中有一个代表每个数组的变量.

arrays bash shell command-line

6
推荐指数
1
解决办法
2320
查看次数

如何在脚本化的 ssh 命令中使用简单的双引号

我正在编写一个小的 bash 脚本并希望通过 ssh 执行以下命令

sudo -i mysql -uroot -pPASSWORD --execute "select user, host, password_last_changed from mysql.user where password_last_changed <= '2016-9-00 11:00:00' order by password_last_changed ASC;"
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个命令同时包含单引号和双引号,所以我做不到

ssh user@host "command";
Run Code Online (Sandbox Code Playgroud)

解决此问题的推荐方法是什么?

linux ssh bash

3
推荐指数
1
解决办法
627
查看次数