如何使管道将字符插入字符串的中间?这是我的示例(运行 Raspian):
hostname -I | sudo python ~/testsite/manage.py runserver {the ip from the first command}:80
这可能吗?另外,请注意,我不想使用静态 IP。
我不认为你想做你要求做的事。如果你想要的只是一个命令的输出用作另一个命令的参数,那么结构就像$(...)
或是`...`
你的朋友。例如:
sudo python ~/testsite/manage.py runserver $(hostname -I):80
Run Code Online (Sandbox Code Playgroud)
请注意,这不是您要求的,而是您想要的。
如果您确实希望将 stdin(管道)用作参数,则可以在 shell 中使用xargs(1)或快速while
循环。
这将 stdin 放在行尾:
sudo python ~/testsite/manage.py runserver $(hostname -I):80
Run Code Online (Sandbox Code Playgroud)
或者,如果您想替换该行内的某些内容:
echo Hello | xargs echo "The word is:"
Run Code Online (Sandbox Code Playgroud)
但是,如果您无法理解 xargs 的(有些神秘的)用法,那么使用它可能会很棘手。xargs 命令也因操作系统而异;该-J
选项适用于 BSD 和 OSX,但不适用于某些较旧的 Linux 发行版。不知道你用的是什么操作系统。
循环可能更容易:
echo Hello | xargs -J % echo % is the word.
Run Code Online (Sandbox Code Playgroud)
或者在你的情况下:
echo Hello | while read word; do echo "$word is the word."; done
Run Code Online (Sandbox Code Playgroud)
循环只运行一次,但您可以更轻松地组合命令行。天啊。
归档时间: |
|
查看次数: |
4820 次 |
最近记录: |