Bash 在单个参数中包含多个空格

Bash 在单个参数中包含多个空格

我正在尝试弄清楚如何创建具有多个参数的 bash,并且一个参数有多个标志。我需要这样做来打开 xterm,导航到 bash 脚本,并使用参数执行它。

这是我的代码:

#!/bin/bash
if [ "$Running_In_New_Xterm" != t ] ; then
Running_In_New_Xterm=exec xterm -hold -e "cd $3 && $1 $2"
Running_In_New_Xterm=t
fi

$2 是在 $1 上运行标志的命令-a blah -o blahblah

我正在尝试确定执行#2 的正确方法。我读到当有多个空格的参数时我必须添加“”,但我在输入端尝试这样做,但它不起作用。我在寻找匹配的 '' ' 时遇到意外的 EOF ”,这表明我的问题与 $2 未正确执行这一事实有关。我认为这与 bash 本身有关。

答案1

cd $3 && $1 $2不是一个可以调用的程序。你需要

Running_In_New_Xterm=exec xterm -hold -e bash -c "cd $3 && $1 $2"

或(如果参数需要,则使用引号;-a blah -o blahblah可能不应该被引用)

Running_In_New_Xterm=exec xterm -hold -e bash -c "exec cd '$3' && exec '$1' '$2'"

相关内容