首页 > 解决方案 > 带有参数输出的 Bash 脚本

问题描述

我有这个任务

编写一个 shell 脚本 evenparam.sh,它有偶数个命令行 >parameters,所以它的语法是 evenparam.sh para1 para2 [para3 para4] ... 脚本应该生成一个 para1 = para2, para3 = 形式的输出>para4, .... 如果程序未正确调用,则在 stderr 上发出使用消息并以 > 1 的返回值结束脚本。

anz=$#
counter=1
if [ $(($# % 2)) -eq 0 ]; then
    for para in $@; do
        pos1=$counter
        pos2=$(($counter+1))
        echo $pos1=$pos2
        counter=$(($counter+2))
        if [ $counter = $(($# + 1)) ]; then
            exit 0
        fi
    done
fi

而且我没有任何信息可以做到这一点有人可以帮助我吗?

标签: shell

解决方案


以下演示功能见 bash 手册man bash,供参考

#!/bin/bash

(( $#%2==0 )) || {
    echo "usage: $0 para1 para2 [para3 para4] ..."
    exit 1
}

# either using array
args=( "$@" )
for (( i=0;i<$#;i+=2 )); do
    echo "${args[i]} = ${args[i+1]}"
done

# or consuming arguments
while (( $#>0 )); do
    echo "$1 = $2"
    shift 2
done

# otherwise because printf has loop, just
printf "%s = %s\n" "$@"

推荐阅读