Yog*_*esh 1 bash shell scripting
我编写了这个脚本,用一个命令编译和运行我的C和java程序.
1 run(){
2 gcc -lm $1 && ( shift; ./a.out $* )
3 }
4
5 jrun(){
6 clas=`echo $1 | cut -d'.' -f1 `
7 javac $1 && { shift; java $clas $* }
8 }
Run Code Online (Sandbox Code Playgroud)
但在运行得到错误.
# source t.sh
-bash: t.sh: line 9: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)
我最后添加时脚本成功运行'}' .
只是意识到,我用{}的,而不是()在line 7.
我的问题是为什么它的运行和工作正常'}'?
$*分开支架后你需要一个分号.事实上,它只是被解释为一个论据javac.
顺便说一下,你可能正在寻找
run(){
gcc -lm "$1" || return
shift
./a.out "$@"
}
jrun(){
javac "$1" || return
local clas=${1%.*}
shift
java "$clas" "$@"
}
Run Code Online (Sandbox Code Playgroud)
它修复了许多引用问题,并避免了稍微笨拙的复合命令.该local声明阻止函数破坏具有相同名称的全局变量,但它是一种基础.
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |