2015-08-29 31 views
1

我想知道你能不能帮我一些东西。为什么格式化的文本块显示出奇怪?

我想为我正在编写的其中一个脚本编写一个菜单。目前,我的脚本是:

echo "########################################" 
echo "#    Script tasks   #" 
echo "#          #" 
echo "# 1 Show running processes   #" 
echo "# 2 Show logged in users    #" 
... (continued) 
echo "########################################" 

然而,当我运行此我的剧本里,由于某种原因,一些#迹象在该行的末尾得到任何咬入框,或进一步推出,导致盒子的右侧看起来非常糟糕,而且没有经过深思熟虑。我希望盒子的右侧看起来甚至(即,实际上就像一个盒子)。

我使用bash在Ubuntu 14.04 LTS和gedit中作为我的文本编辑器。

+1

道歉,如果这是显而易见的,并且您已经检查了它,但你使用gedit中的固定宽度字体?当你运行这个脚本时,你的终端输出是否使用了固定宽度的字体?因为你所描述的(#号不排队)听起来*就像在某处使用比例宽度字体会发生什么样的情况。 – rmunn

+2

另一种可能性是,你在行的空白部分有一些标签。与shell相比,这些可能在你的编辑器中扩展的不同。 –

+0

我使用固定宽度的字体,但我不确定选项卡扩展。你是什​​么意思? –

回答

1

这不是你的问题,但这样做的菜单在shell脚本的方法是用select命令

# an array with the menu choices 
choices=(
    "Show running processes" 
    "Show logged in users" 
    "..." 
) 

# define the prompt 
PS3="What is your choice? " 

# display and get user input 
# select is an infinite loop: `break` when you've done something successfully 
select choice in "${choices[@]}"; do 
    case "$choice" in 
     "Show running processes") 
      some code here 
      break 
      ;; 
     "Show logged in users") 
      some code here 
      break 
      ;; 
     *) 
      echo "Please select a number from the menu." 
      # do not break, select will re-display 
      ;; 
    esac 
done 

# if you need the choice afterward, you still have it 
echo "$choice" 
+0

感谢您的帮助!这比使用while循环和case函数作为我的菜单系统更好。但是,有没有什么办法来格式化选择,所以它可以看起来不同? –

相关问题