我试图在bash中编写一个函数,它将访问scripts命令行参数,但它们被替换为函数的位置参数。有没有任何方法的函数访问命令行参数,如果他们没有明确传递?
- # Demo function
- function stuff {
- echo $0 $*
- }
- # Echo's the name of the script,but no command line arguments
- stuff
- # Echo's everything I want,but trying to avoid
- stuff $*
我读的bash ref手册说这个东西被捕获在BASH_ARGV,
虽然它谈论“堆栈”很多。
虽然它谈论“堆栈”很多。
- #!/bin/bash
- function argv {
- for a in ${BASH_ARGV[*]} ; do
- echo -n "$a "
- done
- echo
- }
- function f {
- echo f $1 $2 $3
- echo -n f ; argv
- }
- function g {
- echo g $1 $2 $3
- echo -n g; argv
- f
- }
- f boo bar baz
- g goo gar gaz
保存到f.sh
- $ ./f.sh arg0 arg1 arg2
- f boo bar baz
- farg2 arg1 arg0
- g goo gar gaz
- garg2 arg1 arg0
- f
- farg2 arg1 arg0