Openbox 파이프라인 메뉴 스크립트 오류

Openbox 파이프라인 메뉴 스크립트 오류

이것은 가장 이상한 것입니다. 스크립트쉘에서 실행할 때 유효함괜찮아요. Openbox 파이프라인 메뉴로 실행하면 "오류가 발생합니다.파이프 메뉴의 출력이 잘못되었습니다.". 스크립트를 시험해 본 후 다섯 번째 열을 인쇄하는 데 특히 관련이 있다는 것을 알았습니다.

더욱 혼란스러운 것은 이것이 7월에만 일어난다는 것입니다. 다른 모든 달에는 스크립트가 올바르게 실행되는 것으로 표시됩니다.

이것은 스크립트입니다. 그것일하다터미널에서 실행하는 경우:

#!/bin/bash
echo "<openbox_pipe_menu>"
cal | while read i;do
echo "<item label=\"$i\"/>"
done
echo "</openbox_pipe_menu>"
echo "</openbox_pipe_menu>"

스크립트 출력:

$ ./date-menu.sh 
<openbox_pipe_menu>
<item label="July 2014"/>
<item label="Su Mo Tu We Th Fr Sa"/>
<item label="1  2  3  4  5"/>
<item label="6  7  8  9 10 11 12"/>
<item label="13 14 15 16 17 18 19"/>
<item label="20 21 22 23 24 25 26"/>
<item label="27 28 29 30 31"/>
<item label=""/>
</openbox_pipe_menu>

파이프 메뉴로 실행해도 여전히 실패하는 단순화된 버전은 다음과 같습니다.

#!/bin/bash
calRow () {
cal | gawk -v row=$1 '{ if (NR==row) { print $0 } }'
}
echo "<openbox_pipe_menu>"
echo "<item label=\"`calRow 5`\"/>"
echo "</openbox_pipe_menu>"

하지만... 5를 제외한 임의의 숫자로 동일한 스크립트를 실행하면 매력처럼 작동합니다.

#!/bin/bash
calRow () {
cal | gawk -v row=$1 '{ if (NR==row) { print $0 } }'
}
echo "<openbox_pipe_menu>"
echo "<item label=\"`calRow 2`\"/>"
echo "<item label=\"`calRow 3`\"/>"
echo "<item label=\"`calRow 4`\"/>"
echo "<item label=\"`calRow 6`\"/>"
echo "<item label=\"`calRow 7`\"/>"
echo "<item label=\"`calRow 8`\"/>"
echo "</openbox_pipe_menu>"

누구든지 살펴보고 싶은 경우를 대비해 menu.xml 파일은 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<openbox_menu xmlns="http://openbox.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://openbox.org/                 file:///usr/share/openbox/menu.xsd">
    <menu id="root-menu" label="Openbox 3">
        <item label="Terminal emulator">
            <action name="Execute">
                <execute>x-terminal-emulator</execute>
            </action>
        </item>
        <item label="Browser">
            <action name="Execute">
                <execute>x-www-browser</execute>
            </action>
        </item>
        <item label="Virtualbox">
            <action name="Execute">
                <execute>virtualbox</execute>
            </action>
        </item>
        <!-- This requires the presence of the 'menu' package to work -->
        <menu id="/Debian"/>
        <separator/>
        <item label="obmenu">
            <action name="Execute">
                <execute>obmenu</execute>
            </action>
        </item>
        <item label="ObConf">
            <action name="Execute">
                <execute>obconf</execute>
            </action>
        </item>
        <item label="Reconfigure">
            <action name="Reconfigure"/>
        </item>
        <item label="Restart">
            <action name="Restart"/>
        </item>
        <separator/>
        <menu execute="obpipes/sysinfo.sh" id="pipe-sysinfo" label="System Info"/>
        <menu execute="obpipes/date-menu.sh" id="pipe-datemenu" label="Date"/>
        <menu id="client-list-menu"/>
        <separator/>
        <item label="Exit">
            <action name="Exit"/>
        </item>
    </menu>
</openbox_menu>

답변1

알고 보니 문제가 발생한 날이 하이라이트였습니다. 강조 표시를 끄면 문제를 해결할 수 있습니다(cal -h).

관련 정보