我有一个超过400个坐标,我想作为参数传递给一个字符串,但我不知道如何将第一个参数作为“lat”传递,第二个参数传递为“lng”,依此类推其余部分。
说我在传递这个
./test 1 2 3 4
我希望我的输出
coordinate: {lat: 1, lng: 2}
coordinate: {lat: 3, lng: 4}
这是我到目前为止所做的,但显然这不是它的完成方式。
for i in $@
do
echo "coordinate: {lat: $i, lng: $i}"
done
答案 0 :(得分:4)
/settings.js
请注意,#!/usr/bin/env bash
while (( "$#" >= 2 )); do
echo "coordinate: {lat: $1, lng: $2}"
shift 2
done
比shift; shift
优先于许多圈子,因为即使只剩下一个参数,它也能正常工作; shift 2
以上是安全的,因为我们正在比较shift 2
以确保始终存在两个或更多参数。
答案 1 :(得分:3)
您不需要循环:
printf "coordinate: {lat: %s, lng: %s}\n" "$@"
在放入路径之前重命名脚本(类似于/ usr / local / bin),因为test
是内置函数。
答案 2 :(得分:0)
你可以使用shift
(但不要这样做 - 请参阅下面的评论):
while [ -n "$1" ]
do
echo "{coordinate: {lat: $1, lng $2}"
shift 2
done