Bil*_*oon 15 linux bash shell jsdoc
我试图获得一个bash脚本,为这样的给定参数生成JSDoc
./jsdoc.sh file.js another.js maybe-a-third.js
Run Code Online (Sandbox Code Playgroud)
我不知道如何将未知数量的参数传递给下一个shell命令.
(另外,不知道如何检查param是否存在,只有在没有出口的情况下if [ -z ... ]
)
此代码最多可用于两个参数,但显然不是正确的方法...
#!/bin/bash
# would like to know how to do positive check
if [ -z "$1" ]
then echo no param
else
d=$PWD
cd ~/projects/jsdoc-toolkit/
# this bit is obviously not the right approach
if [ -z "$2" ]
then java -jar jsrun.jar app/run.js -a -t=templates/jsdoc/ $d/$1
else java -jar jsrun.jar app/run.js -a -t=templates/jsdoc/ $d/$1 $d/$2
fi
cp -R out/jsdoc $d
fi
Run Code Online (Sandbox Code Playgroud)
任何其他指示我如何能够实现这一点将不胜感激.
编辑:根据@skjaidev的回答更新脚本 - 快乐的日子;)
#!/bin/bash
d=$PWD
for i in $*; do
params=" $params $d/$i"
done
if [ -n "$1" ]; then
cd ~/projects/jsdoc-toolkit/
java -jar jsrun.jar app/run.js -a -t=templates/jsdoc/ $params
cp -R out/jsdoc $d
fi
Run Code Online (Sandbox Code Playgroud)
gle*_*man 15
要处理包含空格的参数,请使用"$@"
迭代,并将其存储以供以后在数组中使用.
#!/bin/bash
if (( $# == 0 )); then
echo "usage: $0 file ..."
exit
fi
dir=$(pwd)
declare -a params
for file in "$@"; do params+=( "$dir/$file" ); done
cd ~/projects/jsdoc-toolkit/
java -jar jsrun.jar app/run.js -a -t=templates/jsdoc/ "${params[@]}"
cp -R out/jsdoc "$dir"
Run Code Online (Sandbox Code Playgroud)
jma*_*man 12
$*包含所有参数.你可以迭代它们
for i in $*;
do
params=" $params $d/$i"
done
your_cmd $params
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19185 次 |
最近记录: |