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替换不会改变文件的大小. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |