如何在bash中循环移动字符串?

Kyl*_*ing 6 bash shell text-parsing

我有一个家庭作业,我需要从文件中获取输入并连续删除一行中的第一个单词并将其附加到行的末尾,直到完成所有组合.

我真的不知道从哪里开始,并会感谢任何方向.

令我困惑的部分是假设在不使用数组的情况下执行.我不只是为了解决问题而钓鱼,我只是在寻找一些方向.

SAMPlE INPUT:

Pipes and Filters
Java Swing
Software Requirements Analysis
Run Code Online (Sandbox Code Playgroud)

样本输出:

Analysis Software Requirements
Filters Pipes and
Java Swing
Pipes and Filters
Requirements Analysis Software
Software Requirements Analysis
Swing Java
Run Code Online (Sandbox Code Playgroud)

out*_*tis 6

一些应该有用的花絮:当你用一个字符串调用一个函数时,字符串被分成多个参数(位置参数,名称,其中n是从1开始的整数)对变量中的字符(默认为空格,标签和换行符)$n$IFS

function first() {
    echo $1
}
first one two three
# outputs: "one"
Run Code Online (Sandbox Code Playgroud)

$*并按$@顺序给你所有的位置参数.

其次,特殊变量$#保存函数的参数个数.

第三,shift丢弃第一个位置参数并将所有其他位置参数向上移动一个.

function tail() {
    shift
    echo $*
}
Run Code Online (Sandbox Code Playgroud)

第四,你可以使用`...`或者来捕获命令和函数的输出$(...)

rest=`tail $*`
Run Code Online (Sandbox Code Playgroud)

第五,您可以使用管道符(|)将一个命令的输出发送到另一个命令的输入:

seq 5 | sort
Run Code Online (Sandbox Code Playgroud)