【发布时间】:2019-06-17 15:19:46
【问题描述】:
所以我试图从tmux ls 获取会话,输出是这样的:
mc: 1 windows (created Mon Jun 17 15:53:39 2019) [108x37]
test: 1 windows (created Mon Jun 17 15:53:55 2019) [108x37]
所以我在脚本中将它传递给 grep,但我猜它会尝试执行它,
#!/bin/sh
tmux ls | while read x;
do
TEST=$("$x" | grep -P '^.*?:')
echo "$TEST"
done
输出是这样的:
root@server0:/home/mc# ./test.sh
./test.sh: 5: ./test.sh: mc: 1 windows (created Mon Jun 17 15:53:39 2019) [108x37]: not found
./test.sh: 5: ./test.sh: test: 1 windows (created Mon Jun 17 15:53:55 2019) [108x37]: not found
谁能告诉我这个问题?我找不到任何解决方案,因为我不知道该搜索什么问题。
【问题讨论】:
-
您收到该错误消息是因为您尝试执行从
tmux ls输出读取的行而不是打印它,但您遇到的问题不止于此。您的脚本的具体预期输出是什么? edit 将您的问题展示出来,以便我们为您提供最好的帮助。 -
不确定但不应该是
$(echo "$x" | grep -P '^.*?:') -
@LawrenceCherone 这会阻止他收到当前的错误消息,但仍然会让他对他想做的任何事情采取错误的方法。
-
使用
tmux ls -F "#S"输出just会话名称;那么你根本不需要使用grep。