4
#!/bin/bash

echo SCRIPT: $0
echo "Enter Customer Order Ref (e.g. 100018)"
read P_CUST_ORDER_REF
echo "Enter DU Id (e.g. 100018)"
read P_DU_ID

P_ORDER_ID=${P_CUST_ORDER_REF}${P_DU_ID}


#Loop through all XML files in the current directory
for f in *.xml
do
  #Increment P_CUST_ORDER_REF here
done

在 for 循环中,每次循环时如何将 P_CUST_ORDER_REF 增加 1

so it READs 10000028 uses it on first loop
2nd 10000029
3rd 10000030
4th 10000031
4

3 回答 3

7
((P_CUST_ORDER_REF+=1))

或者

let P_CUST_ORDER_REF+=1
于 2012-06-12T15:33:49.797 回答
6
P_CUST_ORDER_REF=$((P_CUST_ORDER_REF+1))
于 2012-06-12T15:12:42.447 回答
2

您可以使用后增量运算符:

(( P_CUST_ORDER_REF++ ))

我建议:

  • 习惯性地使用小写或混合大小写的变量名,以避免与 shell 或环境变量的潜在名称冲突
  • 扩展时引用所有变量
  • 通常使用-rwith read 来防止反斜杠被解释为转义
  • 验证用户输入

例如:

#!/bin/bash
is_pos_int () {
    [[ $1 =~ ^([1-9][0-9]*|0)$ ]]
}

echo "SCRIPT: $0"

read -rp 'Enter Customer Order Ref (e.g. 100018)' p_cust_order_ref
is_pos_int "$p_cust_order_ref"

read -rp 'Enter DU Id (e.g. 100018)' p_du_id
is_pos_int "$p_dui_id"

p_order_id=${p_cust_order_ref}${p_du_id}

#Loop through all XML files in the current directory
for f in *.xml
do
    (( p_cust_order_ref++ ))
done
于 2012-06-12T16:02:32.683 回答