bash和csh脚本设置变量等于自身除以数字

时间:2013-09-17 00:04:53

标签: bash variables csh

这看起来非常简单,但我已经搜遍过各种各样的方式并尝试了各种各样的方式。

我想要做的就是设置一个等于自身的变量除以常数:

喜欢:$ 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中做到这一点...谢谢!

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:0)

为了完整起见,您可以直接在csh中使用

执行此操作
@ var= $var / 27773173

请注意显示的空格是必需的..这仅适用于整数

当心csh算术不遵循通常的操作顺序,因此我会避免任何远程复杂的事情。