如何将 bash 命令中的输入变量 运行 内联?调试 bash ctrlZ?

How can Input variables into bash commands to be run inline? Debug bash ctrlZ?

更新:我了解到可以使用 xargs getopts() 之类的命令访问输入变量,并使用 $@ $% 和 $# 以及 !* 作为最后一个命令的输出

当我 运行 像

这样的命令时澄清问题

rep="replace" && echo foobar | sed -e 's/.*/${rep}/'

文本未替换为变量内容 我尝试用括号引号和百分号括起来。我也试过 seds insert 命令。

是否有调试或单步执行的方法Bash?我注意到按 ctrl Z 而不是 ctrl C 让我看到 return 值。

对于那些喜欢说"duplicate"而不是回答的人;这些 post 对我没有帮助:

"sed" special characters handling

其他注意事项: //WARNING// 在此命令中我设置了一个别名 运行s 本身是不好的做法?我想我正在尝试 codegolf 代码并最终在我的 live disc 上的 $home 目录中使用 [[ 创建目录,所以在安装时要小心。

alias a="espeak " && b=$($a) //the b part runs it and can be omited

例如,这在 a 的别名后工作正常 seq 11 -1 0 |a

alias countDown="seq -1 0|a" 不适用于 countDown 10 例如 运行.

此方法省略了 sed 命令: @destenson post 在 Escape a string for a sed replace pattern

inputvar="foobar" && txt2replace="oo" && txt2replacewith="rench" && outputvar="${inputvar//"$txt2replace"/"$txt2replacewith"}" && echo $outputvar && echo $outputvar|a

有帮助

把变量放在单引号外:

rep="replace" && echo foobar | sed -e 's/.*/'${rep}'/'

双引号可以:

rep="replace" && echo foobar | sed -e 's/.*/'"${rep}"'/'