将数组索引循环到屏幕会话中

时间:2012-10-31 05:00:28

标签: arrays bash gnu-screen

#!/bin/bash

IFS=$'\n'
fortune_lines=($(fortune | fold -w 30))
Screen_Session=$"{mainscreen}"
Screen_OneLiner=$(screen -p 0 -S ${Screen_Session} -X stuff "`printf "say   ${fortune_lines[@]}\r"`")

for var in "${Screen_OneLiner[@]}"
  do
    echo -e "${var}"
done

上述脚本只打印出第1行

IFS=$'\n'
fortune_lines=($(fortune | fold -w 30))

而不是循环遍历“fortune_lines”的整个索引不确定如何使这项工作。 有什么想法吗?

FYI 我只使用

echo -e

对此脚本进行问题排查。

1 个答案:

答案 0 :(得分:0)

#!/bin/bash
#OLDIFS=$IFS
IFS=$'\r'
    fortune_lines=($(cat /etc/passwd | fold -w 30))
    #Screen_Session=$"{mainscreen}"
        Screen_Session=`screen -ls|grep "\."|grep "("|awk '{print $1}'`
    Screen_OneLiner=$(screen -p 0 -S ${Screen_Session} -X stuff "`printf "say   ${fortune_lines[@]}\r"`")
#IFS=$OLDIFS;
    for var in "${Screen_OneLiner[@]}"
      do
        echo -e "${var}"
    done

对我来说工作正常我将IFS更改为\ r \ n并将其输出/ etc / passwd,其中\ n仅打印第1行