我在shell脚本中指定了变量,如下所示
USERNAME="$1"
PASSWORD="$2"
DATA="${@:3}"
DATAVERSION="$4"
当我运行脚本时,是这样的:
./abc.sh "name" "password" csv V1
但是,当这里 csv 和 V1 被视为第三个参数而不是将 V1 视为第四个参数时,因为我需要 ${@:3} 。
那么如何在将参数传递给脚本时结束这个 ${@:3} 呢?那么参数可以被读取吗?
bash 最强大的功能之一是:您可以尝试在脚本的每个部分附近内联。
要尝试围绕参数解析:只需打开任何终端窗口并尝试:
set -- "Full Name" "password" csv V1
从那里,您处于与使用以下参数运行的脚本(几乎)相同的条件:myscript "Full Name" "password" csv V1。所以你可以:
echo $1
Full Name
echo ${@:3}
csv V1
echo ${@:0:3}
/bin/bash Full Name password
echo ${@:1:3}
Full Name password csv
所以
userName=$1
passWord=$2
datas=${*:3}
dataVersion=$4
printf '%-12s <%s>\n' userName "$userName" passWord "$passWord" \
                  datas "$datas" dataVersion "$dataVersion"
必须产生:
userName     <Full Name>
passWord     <password>
datas        <csv V1>
dataVersion  <V1>
shift或者 ...
set -- "Full Name" "password" csv V1
然后
userName=$1
shift
passWord=$1
shift
datas=$*
shift
dataVersion=$1
printf '%-12s <%s>\n' userName "$userName" passWord "$passWord" \
                      datas "$datas" dataVersion "$dataVersion"
将产生:
userName     <Full Name>
passWord     <password>
datas        <csv V1>
dataVersion  <V1>
关于Tripleee关于大写变量名的评论,我更喜欢使用lowerCamelCase。
| 归档时间: | 
 | 
| 查看次数: | 685 次 | 
| 最近记录: |