1

これは非常に簡単に思えますが、私はあちこち検索してあらゆる種類の方法を試しましたが、うまくいきません。

私がやりたいのは、定数で割った値に等しい変数を設定することだけです:

のように: $var4 = $var4/27773173 、決して計算を行いません。

#!/bin/bash
INPUT=file.csv
OLDIFS=$IFS
IFS=,

[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read var1 var2 var3 var4 var5
do
$var4 = $var4/27773173
/usr/bin/php ./command.php $var1 $var2 $var3 $var4 $var5

done < $INPUT
IFS=$OLDIFS

bashとcshでそれを行う方法を知りたいです...ありがとう!

4

2 に答える 2

1
$var4 = $var4/27773173

のようにする必要があります

(( var4 = var4 / 27773173 ))

または単に

(( var4 /= 27773173 ))

また、コード全体をさらに簡素化し、単語分割から安全に保つことができます

#!/bin/bash

INPUT=file.csv
[[ ! -f $INPUT ]] && { echo "$INPUT file not found"; exit 99; }

while IFS=, read var1 var2 var3 var4 var5
do
  # (( var4 /= 27773173 ))
  echo "var4 = $var4"  ## for debugging only
  var4=$(echo "scale = 2; $var4 / 27773173" | bc)
  echo "var4 (processed) = $var4"  ## for debugging only
  /usr/bin/php ./command.php "$var1" "$var2" "$var3" "$var4" "$var5"
done < "$INPUT"
于 2013-09-17T00:07:34.703 に答える
0

完全を期すために、cshで直接これを行うことができます

@ var= $var / 27773173

表示されているスペースが必要であることに注意してください..これは整数に対してのみ機能します

csh 算術演算は通常の演算順序に従わないことに注意してください。

于 2013-09-25T20:34:07.133 に答える