我制作了一个脚本,用法应该是:
bash test.sh -r chr1:1000-2000 -n 123 test_1.fq test_2.fq
我希望在输入结束时获得输入test_1.fq test_2.fq
。
但是当我在脚本$*
中使用input=$*
时,我得到了整个输入-r chr1:1000-2000 -n 123 test_1.fq test_2.fq
。
其他选项(-r -n)通常使用getopts
获得。
我怎么能只保留最后两个字?
答案 0 :(得分:1)
只需shift
所有参数,直到你只有两个:
while (( $# > 2 )); do
shift
done
echo "$@"
从链接页面:
shift
内置命令用于“移位”位置 如果没有给出数字,则给定数字n或1的参数。
另请注意,使用给定参数的方式是$@
,而不是$*
。
答案 1 :(得分:1)
使用shift:
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_07.html
删除最左侧的参数。如果您知道需要删除的号码,那么这就是解决方案。如果你知道转移后你需要多少,那么另一个答案将起作用:)
$ ./a.sh 1 2 3 4 5 6 7
+ shift 4
+ echo 5 6 7
5 6 7