如何将字符串分布在多行中
How to spread string across multiple lines
假设我有一个脚本 script.py
接受一些命令行参数,还有一个 bash 脚本 main.sh
用下面定义的多个组合调用它。现在与我下面的示例相反,变量 MYARGS
和 MOREARGS
包含更多参数(10-20 左右)。出于这个原因,我认为将这些字符串分成多行,每行一对 argument/value 会更具可读性。有没有办法使用多行字符串,或者有什么方法可以分解它?
MYARGS="--a=\"asdf\" --b=2.61828" # <- break this into two or more lines?
MOREARGS="--c 31415"
python script.py $MYARGS
python script.py $MYARGS $MOREARGS
其中 script.py
是
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--a')
parser.add_argument('--b')
parser.add_argument('--c')
args = parser.parse_args()
print(args)
带引号的字符串可以跨越多行。这个脚本:
MYARGS="-a=asdf
-b=2.1828
-c=foo
"
echo $MYARGS
作为输出生成:
-a=asdf -b=2.1828 -c=foo
这工作正常,但当您的参数包含空格时,它最终会变得棘手。在这种情况下,通常使用 arrays 更有意义,假设您正在使用 Bash(或另一个现代 shell):
MYARGS=(
-a="this has whitespace"
-b=2.1828 # I can even include inline comments!
-c=foo
)
MOREARGS="--c 31415"
python script.py "${MYARGS[@]}"
python script.py "${MYARGS[@]}" $MOREARGS
上面MYARGS
是数组,MOREARGS
是简单的标量变量
假设我有一个脚本 script.py
接受一些命令行参数,还有一个 bash 脚本 main.sh
用下面定义的多个组合调用它。现在与我下面的示例相反,变量 MYARGS
和 MOREARGS
包含更多参数(10-20 左右)。出于这个原因,我认为将这些字符串分成多行,每行一对 argument/value 会更具可读性。有没有办法使用多行字符串,或者有什么方法可以分解它?
MYARGS="--a=\"asdf\" --b=2.61828" # <- break this into two or more lines?
MOREARGS="--c 31415"
python script.py $MYARGS
python script.py $MYARGS $MOREARGS
其中 script.py
是
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--a')
parser.add_argument('--b')
parser.add_argument('--c')
args = parser.parse_args()
print(args)
带引号的字符串可以跨越多行。这个脚本:
MYARGS="-a=asdf
-b=2.1828
-c=foo
"
echo $MYARGS
作为输出生成:
-a=asdf -b=2.1828 -c=foo
这工作正常,但当您的参数包含空格时,它最终会变得棘手。在这种情况下,通常使用 arrays 更有意义,假设您正在使用 Bash(或另一个现代 shell):
MYARGS=(
-a="this has whitespace"
-b=2.1828 # I can even include inline comments!
-c=foo
)
MOREARGS="--c 31415"
python script.py "${MYARGS[@]}"
python script.py "${MYARGS[@]}" $MOREARGS
上面MYARGS
是数组,MOREARGS
是简单的标量变量