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 の 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 に答える