Linux   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – bash脚本中的错误替换大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在尝试让脚本工作以将交换空间添加到VPS,作为一种解决方法,我认为我已经使用它但是现在,每次我收到错误:fakeswap.sh:5:每次尝试时都会有错误的替换如此执行:sudo sh fakeswap.sh. 以下是我的代码: #!/bin/bash SWAP="${1:-512}" NEW="$[SWAP*1024]"; TEMP="${NEW//?/ }"; OLD="${TEMP:1
我正在尝试让脚本工作以将交换空间添加到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\(@R_876_10586@l\|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替换不会改变文件的大小.

大佬总结

以上是大佬教程为你收集整理的linux – bash脚本中的错误替换全部内容,希望文章能够帮你解决linux – bash脚本中的错误替换所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。