我有一个 bash 脚本,需要在其中指定键和参数。我使用别名为其创建了一个命令。
alias command="pushd /path; ./somescript.sh; popd"
脚本完成工作后,我需要返回到调用脚本的目录。
但我收到一个错误:
bash: popd: -o: invalid number
popd: using: popd [-n] [+N | -N]
我的系统的语言不是英语,如果在原版中看起来有所不同,我很抱歉。我应该做什么?
答案1
这工作正常:
$ alias foo="pushd /; ls -ld ./tmp; popd"
$ foo
/ ~
drwxrwxrwt 12 root root 4096 Dec 25 19:30 ./tmp/
~
但如果您需要将参数传递给别名的中间命令,则需要使用函数。否则,参数只是添加到别名的末尾,因此它们作为 的参数popd
。
改为这样做:
something() {
pushd /path > /dev/null
./somescript.sh "$@"
popd > /dev/null
}
something -o blahblah
用作command
别名/函数的名称可能不是最好的调用,它是一个 shell 内置函数,用于调用外部命令,跳过具有相同名称的函数。