这里是PHP行:如何在bash中创建这个PHP行的等价物?
intval(substr($strIn,$i, 2), 32);
我试图将其转换为庆典,首先我知道这是不是必要的,因为bash中如何处理变量intval
,所以我不需要在第一部分中,不过,我已阅读有关substr
,但我无法弄清楚它在这种情况下的作用。有谁知道bash中的等价物是什么?
这里是PHP行:如何在bash中创建这个PHP行的等价物?
intval(substr($strIn,$i, 2), 32);
我试图将其转换为庆典,首先我知道这是不是必要的,因为bash中如何处理变量intval
,所以我不需要在第一部分中,不过,我已阅读有关substr
,但我无法弄清楚它在这种情况下的作用。有谁知道bash中的等价物是什么?
substr($strIn, $i, 2)
从$strIn
返回2个字符,从偏移量$i
开始。例如,substr('foobar', 3, 2)
返回'ba'
。
在bash相对应的是:
STR=foobar
echo ${STR:3:2}
如果起始偏移是不固定的,但它被存储在一个变量,然后它就像这样:
STR=foobar
i=2
echo ${STR:$i:2} # It displays: ob
来实现,这是另一种方式使用剪切:
SUBSTR($〜应变,$ I,$长度)当量:
end=$(expr $i + $length)
echo $strIn | cut -b $i-$end
PHP是松散类型的;有几次您需要明确地将字符串转换为与intval()
的整数。但是,其中一种情况是,如果您使用不同的基数。需要注意的第二个参数是intval()
32,这意味着它正在从底部32当然转换时,bash也能做到这一点:这是使用bash-specific base conversion并不见得会在其他炮弹工作
strIn=foobar
i=2
echo $((32#${strIn:$i:2}))
注意。
测试结果:
mike ~ $ php -a
Interactive shell
php > $strIn = 'foobar';
php > $i = 4;
php > echo intval(substr($strIn,$i, 2), 32);
347
php > exit
mike ~ $ strIn="foobar"
mike ~ $ i=4
mike ~ $ echo $((32#${strIn:$i:2}))
347
mike ~ $
如果你读过['substr'(http://php.net/manual/en/function.substr.php)文档和['intval' ](http://php.net/manual/en/function.intval.php)也有,这里有什么不明确的地方? –
我想你不明白'intval()'在做什么,所以我添加了一个实际上是PHP的bash等价的答案。 – miken32