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 回答