加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – bash脚本中的错误替换

发布时间:2020-12-14 00:05:41 所属栏目:Linux 来源:网络整理
导读:我正在尝试让脚本工作以将交换空间添加到VPS,作为一种解决方法,我认为我已经使用它但是现在,每次我收到错误:fakeswap.sh:5:每次尝试时都会有错误的替换如此执行:sudo sh fakeswap.sh. 以下是我的代码: #!/bin/bashSWAP="${1:-512}"NEW="$[SWAP*1024]";
我正在尝试让脚本工作以将交换空间添加到VPS,作为一种解决方法,我认为我已经使用它但是现在,每次我收到错误:fakeswap.sh:5:每次尝试时都会有错误的替换如此执行:sudo sh fakeswap.sh.

以下是我的代码:

#!/bin/bash

SWAP="${1:-512}"

NEW="$[SWAP*1024]"; TEMP="${NEW//?/ }"; OLD="${TEMP:1}0"

umount /proc/meminfo 2> /dev/null
sed "/^Swap(Total|Free):/s,$OLD,$NEW," /proc/meminfo > /etc/fake_meminfo
mount --bind /etc/fake_meminfo /proc/meminfo

free -m

很明显,似乎失败的替代是在线:NEW =“$[SWAP * 1024]”; TEMP =“${NEW //?/}”; OLD = “${TEMP:1} 0”

我有点惭愧地说我真的不明白应该在那条线上发生什么(除了我们似乎在某种程度上声明变量都是SWAP的衍生物之外).我收集下面的行代替新的常量到一个虚拟配置文件(缺少一个更好的术语)但我不知道如何定义变量TEMP和OLD.

无论如何,我想知道是否有人能够看到为什么这种替换不起作用……甚至可能帮助我理解TEMP和OLD定义时可能会发生什么?

提前谢谢了!

解决方法

sh不是bash. sh shell无法识别某些有效的bash替换.

该脚本的目的是它是可执行的.你会这样做的

chmod a+x fakeswap.sh

之后你可以通过输入来运行它

./fakeswap.sh

(假设它在当前工作目录中;如果不在,则使用完整路径.)

顺便说一句,TEMP是一个等于NEW长度的空格,OLD是将TEMP中的最后一个空格改为0的结果.所以OLD和NEW具有相同的长度,这意味着sed替换不会改变文件的大小.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读