space作为参数从bash编程

Zha*_*dze 2 linux bash shell whitespace

我正在运行来自bash的应用程序,就像这样

./app_name var1 var2 $var3
Run Code Online (Sandbox Code Playgroud)

这里var3--a b, --c d哪里bd不包含空格.

现在我想添加参数--e f,to $var3,但f包含空格.问题是我试图避免这一行的变化.

./app_name var1 var2 $var3
Run Code Online (Sandbox Code Playgroud)

如果我这样离开它,将app_name两部分理解f为两个不同的参数,因此无法解析.

我可以var3以某种方式改变,以便它不会分裂f成两个不同的args吗?我试过把引号放进去,逃避空间,但没有帮助.

Sto*_*ica 6

你可以通过制作var3一个数组来实现这一点,例如:

var3=(--a b --c d --e "f1 f2")

./app_name var1 var2 "${var3[@]}"
Run Code Online (Sandbox Code Playgroud)

这种方式f1 f2将被视为单个参数.