0
#!/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”的整个索引不知道如何使这项工作。有任何想法吗?

仅供参考,我只使用

echo -e

对此脚本进行故障排除。

4

1 回答 1

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 并抽出 /etc/passwd 与 \n 一样,它只打印第一行

于 2012-10-31T15:17:16.073 回答