tag="${tag}==" rate=$((count*100/totalnum)) flag=`printf "[%-80s%s]" $tag "${rate}%"`
时间: 2023-11-23 20:07:28 浏览: 128
这段代码是在 Bash shell 中进行字符串格式化和算术运算的。解释如下:
1. `${tag}==`:`${tag}` 表示一个 Bash 变量,`${tag}==` 将变量 `tag` 的值和两个等号连接在一起,形成一个新的字符串。
2. `rate=$((count*100/totalnum))`:这行代码是在 Bash 中进行算术运算,将变量 `count` 乘以 100 再除以变量 `totalnum`,最终结果赋值给变量 `rate`。
3. `printf` 命令:这是一个 Bash 内置命令,用于格式化输出,可以理解为 Bash 版本的 C 语言中的 `printf` 函数。
4. `[%-80s%s]`:这是一个格式化字符串,其中 `%s` 表示一个字符串的占位符,`%-80s` 表示一个长度为 80 的左对齐字符串的占位符。这里将两个占位符组合在一起,表示一个长度为 80 的左对齐字符串,其中字符串的内容包括变量 `tag` 和变量 `rate`。
5. `$tag "${rate}%"`:这里将变量 `tag` 和字符串 `${rate}%` 作为参数传递给 `printf` 命令,用来填充格式化字符串中的占位符。最终输出的结果是一个长度为 80 的左对齐字符串,其中包含了变量 `tag` 和变量 `rate` 的值。
相关问题
将下面的mysql语句改写为PostgreSQL语句:SELECT LEFT ( jdxz, 9 ) AS street, LEFT ( jdxz, 6 ) AS qx, 'swqc' AS type, COUNT( * ) AS totalnum, ROUND( SUM( IFNULL( jzmj, 0 ) )/ 10000, 2 ) AS totalarea, NOW() AS updatedate FROM swqc_house_base_info WHERE jdxz IS NOT NULL AND deletemark = '0' AND ( yhwt = '1' OR wfjs = '1' OR wfwgsp = '1' ) GROUP BY jdxz
以下是将该MySQL语句改写为PostgreSQL语句后的结果:
SELECT
LEFT(jdxz, 9) AS street,
LEFT(jdxz, 6) AS qx,
'swqc' AS type,
COUNT(*) AS totalnum,
ROUND(SUM(COALESCE(jzmj, 0))/10000, 2) AS totalarea,
NOW() AS updatedate
FROM
swqc_house_base_info
WHERE
jdxz IS NOT NULL
AND deletemark = '0'
AND (yhwt = '1' OR wfjs = '1' OR wfwgsp = '1')
GROUP BY
jdxz;
需要注意的是,在PostgreSQL中,COALESCE函数被用来代替MySQL中的IFNULL函数。同时,PostgreSQL中使用的当前日期函数为NOW(),而不是MySQL中的CURRENT_DATE()。
void HeadQuarter::makeWarriors(int time, int k) { if (lastIndex == -2) return; int index = (lastIndex + 1) % WarriorNum; int wKind = sequence[index]; int cnt = 0; if (leftValue < initLifeValue[wKind]) { lastIndex = -2; return; } lastIndex = index; int id = ++totalNum; leftValue -= initLifeValue[wKind]; shared_ptr<Warrior> pw = Warrior::create(wKind, this, id, initLifeValue[wKind], attackValue[wKind] , k); warriors.push_back(pw); pw->logBirth(time); }
这是一个 C++ 函数 makeWarriors,它是一个 HeadQuarter(司令部)类的成员函数。这个函数的作用是制造武士。函数的参数包括当前的时间 time 和武士的阵营 k。函数内部会根据上一次制造的武士的种类和当前时间来确定这次制造的武士的种类,并检查司令部剩余的生命元是否足够制造这个武士。如果生命元不足,则会更新 lastIndex 的值为 -2,表示无法制造新的武士。如果生命元足够,就会生成一个新的武士对象,并将其加入到 warriors 容器中。最后,函数会记录这个武士的出生时间。
阅读全文