使用 bash 脚本中的特定命令启动 tmux

Starting tmux with certain command inside of bash script

我 运行 试图在 bash-脚本中启动 tmux 时遇到问题。 以下脚本是问题的示例。

tmux new-session -d -s main
tmux send-keys -t main 'ls ~/' C-m
tmux attach-session -d -t main

此脚本工作正常 - 它以 tmux 目录列表 ~/ 开始。 然后我尝试启动相同的命令(ls ~/)作为变量

tmux new-session -d -s main
foo="'ls ~/'"
tmux send-keys -t main "$foo" C-m
tmux attach-session -d -t main

但是,它没有用。我收到以下消息

'ls ~/'
$ 'ls ~/'
-bash: ls ~/: No such file or directory

出现此问题的原因是什么以及如何解决?

您不能将引号放在引号内并让 shell 为您正确删除它们。

有关此问题的完整讨论,请参阅 mywiki.wooledge。org/BashFAQ/050。

在那里放一组引号。

foo="ls ~/"foo='ls ~/',但不能两者兼而有之。