首页 > 解决方案 > 将参数传递给作为不同脚本的参数的脚本

问题描述

我是编程新手,所以请忍受我试图解释我的问题的方式(也欢迎任何关于如何优雅地表达瓷砖的帮助)。

我有一个 bash 脚本(例如) ,script1.sh它接受参数a和(另一个脚本)。本质上,参数for是另一个脚本的名称(比如说)。但是,接受参数和。所以我的问题是,我如何将参数传递给?? (例如,)bccscript1.shscript2.shscript2.shdefscript1.sh./script1.sh -a 1 -b 2 -c script2.sh -d 3 -e 4 -f 5

如果以上没有意义,请提前抱歉,不知道如何表达它......

标签: bashshellarguments

解决方案


您应该为此使用“”

./script1.sh -a 1 -b 2 -c "script2.sh -d 3 -e 4 -f 5"

使用此代码尝试 script1.sh

#!/bin/bash

for arg in "$@"; { # loop through all arguments passed to the script
    echo $arg
}

输出将是

$ ./script1.sh -a 1 -b 2 -c "script2.sh -d 3 -e 4 -f 5"
-a
1
-b
2
-c
script2.sh -d 3 -e 4 -f 5

但是如果你运行这个

#!/bin/bash

for arg in $@; { # no double quotes around $@
    echo $arg
}

输出将是

$ ./script1.sh -a 1 -b 2 -c "script2.sh -d 3 -e 4 -f 5"
-a
1
-b
2
-c
script2.sh
-d
3

4
-f
5

但是没有-e为什么?Cozecho支持参数-e并使用它。


推荐阅读