以相反的顺序打印bash参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以相反的顺序打印bash参数相关的知识,希望对你有一定的参考价值。
我必须编写一个脚本,它将获取所有参数并反向打印它们。
我已经找到了解决方案,但发现它非常糟糕。你有更明智的想法吗?
#!/bin/sh
> tekst.txt
for i in $*
do
echo $i | cat - tekst.txt > temp && mv temp tekst.txt
done
cat tekst.txt
答案
可以做到这一点
for (( i=$#;i>0;i-- ));do
echo "${!i}"
done
这使用以下
c style for loop
Parameter indirect expansion(${!i}
towards页面底部)
和$#
这是脚本的参数数量
另一答案
你可以用这个衬垫:
echo $@ | tr ' ' '
' | tac | tr '
' ' '
另一答案
Reversing a simple string, by spaces
只是:
#!/bin/sh
o=
for i;do
o="$i $o"
done
echo "$o"
将作为
./rev.sh 1 2 3 4
4 3 2 1
要么
./rev.sh world! Hello
Hello world!
If you need to output one line by argument
只需用echo
替换printf "%s
"
:
#!/bin/sh
o=
for i;do
o="$i $o"
done
printf "%s
" $o
Reversing an array of strings
如果你的参数可以包含空格,你可以使用bash数组:
#!/bin/bash
declare -a o=()
for i;do
o=("$i" "${o[@]}")
done
printf "%s
" "${o[@]}"
样品:
./rev.sh "Hello world" print will this
this
will
print
Hello world
另一答案
庆典:
#!/bin/bash
for i in "$@"; do
echo "$i"
done | tac
称这个脚本如下:
./reverse 1 2 3 4
它将打印:
4
3
2
1
以上是关于以相反的顺序打印bash参数的主要内容,如果未能解决你的问题,请参考以下文章