sixnumber Asked: 2012-06-29 03:12:56 +0800 CST2012-06-29 03:12:56 +0800 CST 2012-06-29 03:12:56 +0800 CST BASH 脚本的这一部分是如何工作的? 772 请有人从我有点困惑的 BASH 脚本中解释第 3 行和第 8 行在这部分中是如何工作的?这是为了确定要使用哪个 USB 驱动器进行备份。非常感谢。 1 WEEK_NO=`date +%U | sed -e 's/^0\+//g'` 2 3 (( USB_NN_IDX = $WEEK_NO % 2 )) 4 5 USB_DRIVES[0]="usb03" 6 USB_DRIVES[1]="usb04" 7 8 USB_NN=${USB_DRIVES[$USB_NN_IDX]} scripting bash 4 个回答 Voted Best Answer Vladimir Blaskov 2012-06-29T03:28:46+08:002012-06-29T03:28:46+08:00 第 3 行使用双括号以确保它们之间的表达式被计算为算术表达式。$WEEK_NO % 2返回$WEEK_NO除以 2 的余数,因此结果始终为0或1,具体取决于$WEEK_NO(如果为偶数,结果为0;如果为奇数,结果为1)。 USB_DRIVES 是一个索引数组,根据第 3 行的评估结果,在第 8 行检索其值之一。 您可以查看以man 1 bash获取更多信息。相关信息位于ARITHMETIC EVALUATION和Arrays部分。 rush 2012-06-29T03:29:13+08:002012-06-29T03:29:13+08:00 (( USB_NN_IDX = $WEEK_NO % 2 )) 这个是用来计算的。它会让USB_NN_IDX一个整数除法运算变量的余数等于WEEK_NO2。 USB_NN=${USB_DRIVES[$USB_NN_IDX]} 这个将使USB_NN变量等于USB_DRIVES[0]或USB_DRIVES[1]取决于USB_NN_INX值之一。您可以使用 bash 中的任何实现来使一个变量等于另一个变量: A=$B A=${B} 两者都是允许的,这里使用最后一个。同样在数组中,您可以使用索引作为变量二。 Thor 2012-06-29T03:31:57+08:002012-06-29T03:31:57+08:00 (( )) 符号是 的简写,请在此处let阅读更多内容。所以: (( USB_NN_IDX = $WEEK_NO % 2 )) 设置USB_NN_IDX为周数的模2,即 0 或 1。此数字用作USB_NN数组的索引。 Kondybas 2012-06-29T03:42:05+08:002012-06-29T03:42:05+08:00 第 3 行 ((...)) - 只是嵌入到 shell 中的整数数学。“%” - 是一个 MODULO/REMINDER 运算符,与返回除法整数部分的“/”互补。在您的情况下,第 3 行返回 0 或 1 取决于周数。然后该数字代入设备名称 USBx - USB_0 或 USB_1。 似乎写入不同闪存驱动器的备份取决于偶数/奇数周数。
第 3 行使用双括号以确保它们之间的表达式被计算为算术表达式。
$WEEK_NO % 2
返回$WEEK_NO除以 2 的余数,因此结果始终为0或1,具体取决于$WEEK_NO(如果为偶数,结果为0;如果为奇数,结果为1)。USB_DRIVES 是一个索引数组,根据第 3 行的评估结果,在第 8 行检索其值之一。
您可以查看以
man 1 bash
获取更多信息。相关信息位于ARITHMETIC EVALUATION和Arrays部分。这个是用来计算的。它会让
USB_NN_IDX
一个整数除法运算变量的余数等于WEEK_NO
2。这个将使
USB_NN
变量等于USB_DRIVES[0]
或USB_DRIVES[1]
取决于USB_NN_INX
值之一。您可以使用 bash 中的任何实现来使一个变量等于另一个变量:两者都是允许的,这里使用最后一个。同样在数组中,您可以使用索引作为变量二。
(( )) 符号是 的简写,请在此处
let
阅读更多内容。所以:(( USB_NN_IDX = $WEEK_NO % 2 ))
设置
USB_NN_IDX
为周数的模2,即 0 或 1。此数字用作USB_NN
数组的索引。第 3 行 ((...)) - 只是嵌入到 shell 中的整数数学。“%” - 是一个 MODULO/REMINDER 运算符,与返回除法整数部分的“/”互补。在您的情况下,第 3 行返回 0 或 1 取决于周数。然后该数字代入设备名称 USBx - USB_0 或 USB_1。
似乎写入不同闪存驱动器的备份取决于偶数/奇数周数。