xargs覆盖对话框的退出状态

时间:2016-09-10 13:54:44

标签: bash dialog xargs

我有一个使用以下代码创建的对话框:

    exec 3>&1
    selection=$(echo " --backtitle \"Patches\" 
    --extra-button --extra-label \"See File List\"
    --title \"Patches\" --clear --ok-label \"Create\" --cancel-label \"Exit\" 
    --menu \"Please select:\" $HEIGHT $WIDTH 25 $gridData" |
    xargs dialog 2>&1 1>&3)
    exit_status=$?
    exec 3>&-

除Ok / Cancel对外,该对话框还有一个额外的按钮(虽然我已将其重命名)。除非单击额外按钮,否则它的效果很好,在这种情况下,$ exit_status具有相同的值(123),就像单击取消按钮一样。有没有办法在没有xargs干扰的情况下获得对话框的状态?

1 个答案:

答案 0 :(得分:2)

根据xargs的{​​{3}}:

xargs exits with the following status:
  0 if it succeeds
  123 if any invocation of the command exited with status 1-125
  124 if the command exited with status 255
  125 if the command is killed by a signal
  126 if the command cannot be run
  127 if the command is not found
  1 if some other error occurred.

你想在这里完成什么?在这种情况下,我不明白为什么你需要xargs。您应该直接致电dialog,如下所示:

dialog --backtitle Patches \
    --extra-button --extra-label "See File List" \
    --title Patches --clear --ok-label Create --cancel-label Exit \
    --menu "Please select:" $HEIGHT $WIDTH 25 "$gridData"

即使$gridData包含特殊字符(例如"或空格),这也会有用。