Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在Bash中将字符串转换为整数?_Linux_Oracle_Bash_Shell - Fatal编程技术网

Linux 如何在Bash中将字符串转换为整数?

Linux 如何在Bash中将字符串转换为整数?,linux,oracle,bash,shell,Linux,Oracle,Bash,Shell,我在StackOverflow上找到了很多关于这个问题的答案,但我无法将它们应用到我的代码中 我使用此命令获取当月的最后一天: LASTDAY=`cal $(date +"%m %Y") | grep . | fmt -1 | tail -1` 然后我使用这个代码: for i in {1..${LASTDAY}} do # code for processing here! done 但总是要得到这样的警告: 第12行:[:{1..31}:应为整数表达式 而i是{1..31}但我希

我在StackOverflow上找到了很多关于这个问题的答案,但我无法将它们应用到我的代码中

我使用此命令获取当月的最后一天:

LASTDAY=`cal $(date +"%m %Y") | grep . | fmt -1 | tail -1`
然后我使用这个代码:

for i in {1..${LASTDAY}}
do
    # code for processing here!
done
但总是要得到这样的警告: 第12行:[:{1..31}:应为整数表达式

i{1..31}但我希望i是一个范围[1,31]内的数字

我试过这个:

LASTDAY=$((LASTDAY+0))

LASTDAY=$( echo "$LASTDAY - 0" | bc )

LASTDAY=$(printf "%d" "$LASTDAY")
但它不能解决这个问题。我的代码有什么问题?如何解决


高级感谢。

在{1..$Lastday}中使用以下内容代替

for i in $(seq 1 ${LASTDAY}) ; do  echo $i done

这会起作用。

我不是
bash
头,但我认为范围表达式类似于
{1..31}
可能是bash的一个新功能。您使用的是什么版本?
bash--version
,应该会输出您的版本。在上面的问题中添加这一点信息。祝您好运。您是对的。但是,我已经多次运行此表达式,但在我上面提出的问题中失败了。仅供参考,我的bash版本是:3.2.25(1)-发行版(x86_64-redhat-linux-gnu)大括号扩展在
bash
中已经有很长一段时间了。但是,它发生在参数扩展之前;由于大括号不包含两个整型文字,表达式按字面意义被视为字符串
{1..${LASTDAY}
。然后应用参数扩展来生成
{1..31}
。接收
$i
的代码会拒绝该字符串,因为该字符串不是整数。请注意范围长度-某些shell对64 KiB的行长度有限制。在bash中,使用可能会使用常用for((expr1;expr2;expr3));do list;done