我在linux下写了个脚本文件:
sh
iptables -t nat -A PREROUTING -d 61.*.*.* -p tcp --dport 80 -j DNAT --to 192.168.0.2
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.2 -p tcp --dport 80 -j SNAT --to 192.168.0.1
这三条命令如果一行一行输入后可以执行,但放在脚本文件里就只会执行第一行,结果出现“sh-2.05b#”后就不动了,请各位指教!
我用smoothwall做网关,这是一个基于linux 2.6.16.60的软路由,因为要做回流,所以参照网上的资料写了个脚本文件:
sh
iptables -t nat -A PREROUTING -d 61.*.*.* -p tcp --dport 80 -j DNAT --to 192.168.0.2
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.2 -p tcp --dport 80 -j SNAT --to 192.168.0.1
这三条命令如果一行一行输入后可以执行,但放在脚本文件里就只会执行第一行,结果出现“sh-2.05b#”后就不动了,这是为什么呢?
为什么linux下脚本文件只执行第一行命令sh,后面的就不会自动执行了?
你的格式错了。是 !\/bin\/sh 不是 直接 sh 应该是 === !\/bin\/sh iptables -t nat -A PREROUTING -d 61.*.*.* -p tcp --dport 80 -j DNAT --to 192.168.0.2 iptables -t nat -A POSTROUTING -s 192.168.0.0\/24 -d 192.168.0.2 -p tcp --dport 80 -j SNAT --to...
linux shell编程脚本第一行为什么一定要用"#!\/bin\/sh",不写行不行?这...
!\/bin\/sh为指定你运行脚本的shell类型,是bash,ksh还是其它,一般系统有固定的shell,不定这行也能执行,只是为了规范写上的。还有比如你执行的是perl程序,就可以写#!\/bin\/perl.
linux 在\/usr\/bin下的sh脚本不能随处执行的疑问
环境变量只保证在执行命令时,从其中路径搜索可执行文件 可不是说,脚本中指定的文件名也会从这些目录搜索 所以 脚本中的more bin.sh改成 more "$0"
linux脚本中.\/执行某个文件和定时脚本中自动执行某个文件有什么区别
如果用定时调用脚本的话,必须在脚本最开始强制执行.profile文件,不然程序不会读这个文件,也就不能使用.profile中的环境变量。如果你的系统中没有.profile文件,那也得执行设置环境变量的文件
linux上如何实现运行一个脚本 使用bash或者sh可以正常运行 但是如果...
chmod -x a.sh 就是去掉可执行属性就好,只能bash a.sh,不能.\/a.sh 抱歉手机屏小,没看到前面有人答了。。。
linux中.sh脚本文件中命令的执行顺序
每条命令后如果不加&的话就是依次一行一行的顺序执行,只有前面一行执行完成后再执行下一行,如果希望多个命令在一个shell内执行可在一行写入多条命令,用&&符号间隔
在终端中直接运行指令与放在脚本中运行指令, 运行结果不一样
一般 Linux 下面的 \/bin\/sh 是一个链接,指向一个默认的 shell 解释器,这个链接如果不是你需要的解释器,那么脚本运行出现任何问题都可能。如果系统装了 busybox ,他也会提供一个 sh 解释器,而且命令的文件名也是 sh ,他和 bash 运行结果也有区别,只是这个 sh 不一定在 \/bin 里面。
linuxshell脚本执行完sh后自动退出
题主是否想询问“linuxshell脚本执行完sh后自动退出怎么解决”?方法如下。1、首先,审查一下代码,检查有没有语法错误,有没有exit等命令。2、其次,通过exec执行命令,当命令执行完终止之后,这个脚本不会强制退出。3、最后,添加子进程,这样就不会影响当前的shell,linuxshell脚本执行完不会自动退出。
linux下.sh文件的执行问题。
原因是:因为如果你要做mysqldump来备份,那要么你先要进入到你的mysql数据库的那个目录,然后执行你这条命令,要么,在数据库和保存文件就要用完整的路径,否则它会在你的当前目录下执行,这样,当你的当前目录下并没有数据库文件时,就会得到空文件。
linux环境下执行sh文件简单疑问
.\/ 表示执行当前目录下的某个文件 后面紧跟文件名 单独打文件名 是 不会执行的 (除非你把 文件放到 系统的 \/bin \/sbin 里去,应该是这样 不是很确定 你可以自己去试一下)