【问题标题】:Linux - Loop User input in CSHLinux - 在 CSH 中循环用户输入
【发布时间】:2016-11-06 01:16:58
【问题描述】:

我需要循环用户输入最多 10 次,或者直到用户按下“n”,然后回显输入的单词列表。当我运行它时,我收到消息:Directory stack not that deep

#!/bin/csh

echo "Enter Word"
set buffer = ("" "" "" "" "" "" "" "" "" "")
set count = 0
set argument = $<

while ($count <=10 && $argument != "n")
set buffer[$count] = $argument
@ count++
if ($argument = "n")
break
endif
set buffer [$count] = $argument
@ count++`enter code here`
end
echo $buffer

【问题讨论】:

  • 您确定需要在 C shell 中执行此操作吗?如果必须的话,倒霉。一般来说,C shell 不被认为是一个好的编程工具——请参阅Csh Programming Considered Harmful,它是网络上同一文档的许多可能链接之一。
  • 我讨厌我必须这样做,但这是为了上课,我们要花一周时间学习 C shell,所以答案必须在 C 中。感谢代码,我会看看我是否可以将概念合并到 C 中。

标签: linux csh


【解决方案1】:

第一次尝试

这是我的第一个 脚本:

#!/bin/csh

set buffer = ('' '' '' '' '' '' '' '' '' '')
set count = 1
echo -n "Enter 1st Word: "
set argument = $<

while ($count <= 10 && $argument != "n")
    set buffer[$count] = $argument
    @ count++
    if ($count <= 10) then
    echo -n "Enter Word #"$count": "
    set argument = $<
    endif
end

set repl = 1
while ($repl < $count)
    printf " %2d  %s\n" $repl $buffer[$repl]
    @ repl++
end

echo $buffer
echo "$buffer"

播放:

Enter 1st Word: Hello
Enter Word #2: good
Enter Word #3: world!
Enter Word #4: 
Enter Word #5: End
Enter Word #6: now.
Enter Word #7: n
  1  Hello
  2  good
  3  world!
  4  
  5  End
  6  now.
Hello good world! End now.
Hello good world!  End now.

或者在相同的输入上迭代参数

#!/bin/csh

set buffer = ('' '' '' '' '' '' '' '' '' '')
set count = 1
echo -n "Enter words: "
set argument = $<
set array = ($argument)

while ($count <= 10 && $array[1] != "n" && $#array > 0)
    set buffer[$count] = $array[1]
    @ count++
    if ($count <= 10 && $#array > 1) then
    shift array
    else
    break
    endif
end

set repl = 1
while ($repl < $count)
    printf " %2d  %s\n" $repl $buffer[$repl]
    @ repl++
end

echo $buffer
echo "$buffer"

运行:

Enter words: Hello good world. n Trick test
  1  Hello
  2  good
  3  world.
Hello good world.
Hello good world.

【讨论】:

  • 此代码用于提示您输入每个单词。相反,它应该建立缓冲区直到达到 10,然后将其回显
  • 回答已编辑。第二个版本是否符合您的需要?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-16
  • 2020-02-15
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 2015-06-14
  • 2015-07-03
相关资源
最近更新 更多