[英]Print bash arguments in reverse order
我必须编写一个脚本,它将接受所有参数并反向打印它们。
我已经做了一个解决方案,但发现它很糟糕。 你有更聪明的想法吗?
#!/bin/sh
> tekst.txt
for i in $*
do
echo $i | cat - tekst.txt > temp && mv temp tekst.txt
done
cat tekst.txt
你可以使用这个衬垫:
echo $@ | tr ' ' '\n' | tac | tr '\n' ' '
重击:
#!/bin/bash
for i in "$@"; do
echo "$i"
done | tac
将此脚本称为:
./reverse 1 2 3 4
它会打印:
4
3
2
1
简单地:
#!/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!
只需用printf "%s\\n"
替换echo
:
#!/bin/sh
o=
for i;do
o="$i $o"
done
printf "%s\n" $o
如果您的参数可能包含空格,则可以使用 bash 数组:
#!/bin/bash
declare -a o=()
for i;do
o=("$i" "${o[@]}")
done
printf "%s\n" "${o[@]}"
样本:
./rev.sh "Hello world" print will this
this
will
print
Hello world
便携和 POSIXly,没有数组并使用空格和换行符:
反转位置参数:
flag=''; c=1; for a in "$@"; do set -- "$a" ${flag-"$@"}; unset flag; done
打印它们:
printf '<%s>' "$@"; echo
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.