给定一个带有单个长字符串参数的命令,如:
mycommand -arg1 "very long string which does not fit on the screen"
Run Code Online (Sandbox Code Playgroud)
是否有可能以某种方式分割它,类似于如何分割单独的参数\.
我试过了:
mycommand -arg1 "very \
long \
string \
which ..."
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
mycommand 是一个外部命令,因此不能修改为采用单个参数.
Tom*_*ech 29
您可以将字符串分配给变量,如下所示:
long_arg="my very long string\
which does not fit\
on the screen"
Run Code Online (Sandbox Code Playgroud)
然后只需使用变量:
mycommand "$long_arg"
Run Code Online (Sandbox Code Playgroud)
在双引号内,删除前面带有反斜杠的换行符.请注意,字符串中的所有其他空格都很重要,即它将出现在变量中.
小智 7
你试过没有引号吗?
$ foo() { echo -e "1-$1\n2-$2\n3-$3"; }
$ foo "1 \
2 \
3"
1-1 2 3
2-
3-
$ foo 1 \
2 \
3
1-1
2-2
3-3
Run Code Online (Sandbox Code Playgroud)
当您将其封装在双引号中时,它会尊重您的反斜杠并忽略以下字符,但是由于您将整个内容括在引号中,因此它认为引号内的整个文本块都应该被视为单个争论。