美文网首页
bash如何修改命令行参数

bash如何修改命令行参数

作者: CodingCode | 来源:发表于2020-04-24 08:39 被阅读0次

bash如何修改命令行参数

背景是这样的,假设有一个bash脚本接受用户参数,然后做环境检查,然后调用一个子命令,并把用户的输入参数传给子命令,这当中要修改部分命令参数的值。

例如:用户调用:

$ wrapper.sh -cmd convert -infile path/to/infile -outfile path/to/outfile

然后在wapper.sh里面,需要把-infile和-outfile的值改掉,例如相对路径改成决定路径;之后再调用子命令sub.sh

$ cat wrapper.sh
...
...change command line parameters...
sub.sh $@
...

实现脚本:

$ cat wrapper.sh
...
INFILE=""
OUTFILE=""
args=("$@")
for ((i = 0; i < ${#args[@]}; i++ )); do
  echo $i=${args[$i]}
  if [ "${!i}" == "-infile" ]; then
     INFILE=${args[$i]}
     set -- "${@:1:${i}}" "/tmp/tmpinfile" "${@:$(($i+2))}"
  elif [ "${!i}" == "-outfile" ]; then
     OUTFILE=${args[$i]}
     set -- "${@:1:${i}}" "/tmp/tmpoutfile" "${@:$(($i+2))}"
  fi
done

echo sub.sh $@

变量INFILE和OUTFILE存储的是原始参数值。

运行结果:

$ ./wrapper.sh -cmd convert -infile myinfile -outfile myoutfile
sub.sh -cmd convert -infile /tmp/tmpinfile -outfile /tmp/tmpoutfile

相关文章

网友评论

      本文标题:bash如何修改命令行参数

      本文链接:https://www.haomeiwen.com/subject/msqxwhtx.html