为什么带有select的菜单第一次失败?

沃尔特·A

我试图使用内置的select语句通过一个简单的菜单回答另一个SO问题该代码显示中的名称/etc/passwd,并允许您通过输入数字来选择名称:

PS3="Enter a number: "
select name in $(cut -d: -f1 /etc/passwd) ; do
   if [ -n "${name}" ]; then
      break
   fi
   echo "Sorry, please enter a number as shown."
done
echo "Entry from passwd is: ${name}"

除第一次外,其他都工作正常。第一次给出正确答案时,它将要求您重试。
我试图第一次获得更详细的解释,但无法获得可复制的烹饪书。当您将此代码复制粘贴到服务器上并给出正确答案时,您可能会遇到相同的问题。当您重复命令(从历史记录或新粘贴的命令)时,代码现在显示问题。我试图通过注销并登录(有时可以正常工作)或重新启动来再次解决该问题。
我尝试了其他方法来在其他情况下重现该问题(使用不同的变量名称,未设置变量,使用慢速值列表select name in $(echo One; sleep 1; echo Two; sleep 2; echo Three; sleep 1);并打开新的shell)。

我使用搜索了其他示例select,但在其他帖子(例如https://stackoverflow.com/a/16750755/3220113https://askubuntu.com/a/1716)中找不到线索

我试图通过同步修复代码,但这似乎是一种解决方法:

PS3="Enter a number: "
select name in $(cut -d: -f1 /etc/passwd) ; do
   # is sync needed here?
   sync
   if [ -n "${name}" ]; then
      break
   fi
   echo "Sorry, please enter a number as shown."
done
echo "Entry from passwd is: ${name}"

包含sync命令时,无法重现该错误。同步真的是一个有效的补丁程序,为什么我在这里需要它?

我不需要其他方式来编写菜单。我已经从bash脚本中找到了图形对话框Dialog,并且正在寻找简单替换我自己过于复杂的https://unix.stackexchange.com/a/115371/57293的方法

巴尔玛

仅当您以交互方式而不是在脚本中键入命令时,才会出现此问题。原因是您在该select之后键入的行被用作对提示的响应。由于if不在菜单中,因此会报告错误。然后它不执行if命令,因为它被读取为对提示的响应。

在脚本中这不是问题,因为脚本中的命令未用作标准输入。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么eb部署第一次部署失败?

来自分类Dev

第一次关闭所有子菜单

来自分类Dev

测试什么时候第一次失败?

来自分类Dev

为什么第一次收费很重要

来自分类Dev

为什么在第一次迭代后就停止了?

来自分类Dev

第一次流浪失败

来自分类Dev

为什么第一次调用readline()会减慢随后对fnmatch()的所有调用?

来自分类Dev

为什么第一次调用readline()会减慢随后对fnmatch()的所有调用?

来自分类Dev

第一次尝试使用并发线程。为什么我没有输出?

来自分类Dev

第一次单击后,随机按钮游戏为什么会有缺陷?

来自分类Dev

为什么第一次没有调用 JavaFX 中的 onSuceeded(...) 方法?

来自分类Dev

为什么第一次点击没有触发?

来自分类Dev

为什么setTimeout()第一次只运行一次我的代码?

来自分类Dev

带有调度程序的简单Spring Batch作业:第一次迭代成功。后续迭代失败

来自分类Dev

为什么我的UpdateAsync(user)方法第一次失败,声称用户不存在?

来自分类Dev

为什么Neo4j查询没有在第一次查询中返回wright数据?

来自分类Dev

为什么UnhandledExceptionEventEventArgs.Exception仅在第一次访问时返回有用的信息?

来自分类Dev

为什么UnhandledExceptionEventEventArgs.Exception仅在第一次访问时返回有用的信息?

来自分类Dev

为什么我没有在第一次调用我的 REST API 时获取数据

来自分类Dev

Reactjs 为什么 useEffect 有时会在每次安装/渲染时运行,而不是第一次

来自分类Dev

为什么我的for loop提示第一次被打印两次?

来自分类Dev

为什么我的提示第一次重复两次?

来自分类Dev

什么是“加载符号”,为什么第一次需要这么长时间?

来自分类Dev

Android WebView仅在第一次失败

来自分类Dev

sorted() 仅在第一次调用时失败

来自分类Dev

twitter小部件仅在第一次加载时有效,然后失败

来自分类Dev

第一次未加载带有毕加索的地图标记点图像

来自分类Dev

带有CheckBox的GridView,在第一次时CheckedChanged始终为true

来自分类Dev

第一次带有空更改的 GetChangeFeedProcessorBuilder 回调

Related 相关文章

  1. 1

    为什么eb部署第一次部署失败?

  2. 2

    第一次关闭所有子菜单

  3. 3

    测试什么时候第一次失败?

  4. 4

    为什么第一次收费很重要

  5. 5

    为什么在第一次迭代后就停止了?

  6. 6

    第一次流浪失败

  7. 7

    为什么第一次调用readline()会减慢随后对fnmatch()的所有调用?

  8. 8

    为什么第一次调用readline()会减慢随后对fnmatch()的所有调用?

  9. 9

    第一次尝试使用并发线程。为什么我没有输出?

  10. 10

    第一次单击后,随机按钮游戏为什么会有缺陷?

  11. 11

    为什么第一次没有调用 JavaFX 中的 onSuceeded(...) 方法?

  12. 12

    为什么第一次点击没有触发?

  13. 13

    为什么setTimeout()第一次只运行一次我的代码?

  14. 14

    带有调度程序的简单Spring Batch作业:第一次迭代成功。后续迭代失败

  15. 15

    为什么我的UpdateAsync(user)方法第一次失败,声称用户不存在?

  16. 16

    为什么Neo4j查询没有在第一次查询中返回wright数据?

  17. 17

    为什么UnhandledExceptionEventEventArgs.Exception仅在第一次访问时返回有用的信息?

  18. 18

    为什么UnhandledExceptionEventEventArgs.Exception仅在第一次访问时返回有用的信息?

  19. 19

    为什么我没有在第一次调用我的 REST API 时获取数据

  20. 20

    Reactjs 为什么 useEffect 有时会在每次安装/渲染时运行,而不是第一次

  21. 21

    为什么我的for loop提示第一次被打印两次?

  22. 22

    为什么我的提示第一次重复两次?

  23. 23

    什么是“加载符号”,为什么第一次需要这么长时间?

  24. 24

    Android WebView仅在第一次失败

  25. 25

    sorted() 仅在第一次调用时失败

  26. 26

    twitter小部件仅在第一次加载时有效,然后失败

  27. 27

    第一次未加载带有毕加索的地图标记点图像

  28. 28

    带有CheckBox的GridView,在第一次时CheckedChanged始终为true

  29. 29

    第一次带有空更改的 GetChangeFeedProcessorBuilder 回调

热门标签

归档